home *** CD-ROM | disk | FTP | other *** search
/ JCSM Shareware Collection 1996 September / JCSM Shareware Collection (JCS Distribution) (September 1996).ISO / uother__ / 13030a01.ziv / POWERBAT.DOC < prev    next >
Text File  |  1994-05-18  |  125KB  |  5,126 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.                                   PowerBatch
  11.                                   Version 2.2
  12.  
  13.  
  14.  
  15.                          COMPUTING SYSTEMS DESIGN, INC.
  16.                                4437 Ormond Trace
  17.                                Marietta, GA 30066
  18.                                FAX (404) 926-9590
  19.  
  20.  
  21.                       Copyright (c) 1990-1993 by CSD, Inc.
  22.                          All Rights Reserved Worldwide
  23.  
  24.                This documentation was produced on April 25, 1994
  25.  
  26.  
  27.  
  28.  
  29.  
  30.                                Table Of Contents
  31.  
  32.  
  33.                 Introduction   . . . . . . . . . . . . . . . . . . . . . . .  1
  34.  
  35.                 Software Support   . . . . . . . . . . . . . . . . . . . . .  3
  36.  
  37.                 Concept Of Operation   . . . . . . . . . . . . . . . . . . .  4
  38.  
  39.                 Installation   . . . . . . . . . . . . . . . . . . . . . . .  6
  40.  
  41.                 Constructing A PowerBatch Source File  . . . . . . . . . . .  7
  42.  
  43.                 PowerBatch Commands  . . . . . . . . . . . . . . . . . . . .  9
  44.  
  45.                 Command Summary  . . . . . . . . . . . . . . . . . . . . . . 85
  46.  
  47.                 Compilation Errors   . . . . . . . . . . . . . . . . . . . . 87
  48.  
  49.                 Examples   . . . . . . . . . . . . . . . . . . . . . . . . . 90
  50.  
  51.  
  52.  
  53.  
  54.  
  55.                                   Introduction
  56.         This product was originally written in late 1989 to provide the user
  57.         an alternative to the standard DOS batch files, an alternative that
  58.         produced standalone executable .EXE programs. The original command set
  59.         was aimed primarily at providing capabilities that solved the classic
  60.         "batch" type application.
  61.  
  62.         Requests from current users of the product and a desire to provide
  63.         additional capabilities beyond these requests have driven the product
  64.         far beyond original expectations. This product has become not only a
  65.         replacement for solving the classic batch application, but a very high
  66.         level language capable of creating sophisticated applications.
  67.  
  68.         PowerBatch compiled programs create all the details that are necessary
  69.         to create a professional microcomputer program.
  70.         This product is intended to provide a novice or beginning programmer
  71.         the capability of producing non-trivial programs with a high success
  72.         rate AND providing the experienced programmer with a tool which makes
  73.         quick work of the task of prototyping new applications.
  74.  
  75.         Trademarks
  76.         ==========
  77.         PowerBatch is a trademark of Computing Systems Design(CSD), Inc.
  78.         MS-DOS is a trademark of MicroSoft Corporation.
  79.         IBM and PC-DOS are trademarks of IBM Corporation.
  80.  
  81.  
  82.         License Agreement
  83.         =================
  84.         a. You are granted a personal, non-transferable and  non-exclusive
  85.         license to use the Program under the terms stated in this Agreement. 
  86.         Title and ownership of the Program and documentation remain in CSD,
  87.         Inc.;
  88.  
  89.         b. the Program may be used by you, your employees, or your agents only
  90.  
  91.  
  92.                                     Page 1
  93.  
  94.  
  95.  
  96.  
  97.  
  98.         on a single computer;
  99.  
  100.         c. you and your employees and agents are required to protect the
  101.         confidentiality of the Program. You may not distribute or otherwise
  102.         make the Program or documentation available to any third party;
  103.  
  104.         d. you may not copy or reproduce the Program or documentation for any
  105.         purpose, except you may copy the Program into machine readable or
  106.         printed form for backup purposes in support of your use of the
  107.         Program. (Any portion of this Program merged into or used in
  108.         conjunction with another program will continue to be the property of
  109.         CSD, Inc. and subject to the terms and condition of this Agreement);
  110.  
  111.         e. you may not assign or transfer this Program or this license to any
  112.         other person without the express prior consent of CSD, Inc.;
  113.  
  114.         f. you acknowledge that you are receiving only a limited license to
  115.         use the program and the related documentation. You acknowledge that
  116.         CSD, Inc. retains title to the Program and documentation.  You
  117.         acknowledge that CSD, Inc. has a valuable proprietary interest in the
  118.         Program and documentation; and
  119.  
  120.         You must reproduce and include the copyright notice on any copy,
  121.         modification or portion merged into another program with the exception
  122.         of compiled executable modules produced from your own source input. 
  123.         You may modify the Program for your own use, entirely at your own
  124.         risk, provided that the Program is used as specified in Section (b) of
  125.         this Agreement.
  126.  
  127.         Output from the PowerBatch compiler generated from original source code
  128.         become the property of the license holder and CSD, Inc. retains no
  129.         rights nor demands any royalty from their use.
  130.  
  131.         YOU MAY NOT USE, MODIFY, OR TRANSFER THE PROGRAM, OR ANY COPY,
  132.         MODIFICATION OR MERGED PORTION, IN WHOLE OR IN PART, EXCEPT AS
  133.         EXPRESSLY PROVIDED FOR IN THIS LICENSE.
  134.  
  135.         IF YOU TRANSFER POSSESSION OF ANY COPY, MODIFICATION OR MERGED PORTION
  136.         OF THE PROGRAM TO ANOTHER PARTY, YOUR LICENSE IS AUTOMATICALLY
  137.         TERMINATED.
  138.  
  139.         TERM
  140.         The license is effective until terminated.  You may terminate it at
  141.         any other time by destroying the Program together with all copies,
  142.         modifications and merged portion in any form.  It will also terminate
  143.  
  144.  
  145.                                     Page 2
  146.  
  147.  
  148.  
  149.  
  150.  
  151.         upon conditions set forth elsewhere in the Agreement or if you fail to
  152.         comply with any term or condition of the Agreement.  You agree upon
  153.         such termination to destroy the Program together with all copies,
  154.         modifications and merged portions in any form.
  155.  
  156.         Software Support
  157.         ================
  158.         Support for PowerBatch may be obtained by contacting CSD, Inc. on
  159.         Compuserve using Compuserve Mail (EasyPlex). Address inquiries to
  160.         Compuserve ID 72701,155. If you are not a Compuserve member, you may
  161.         obtain support by writing to:
  162.  
  163.                             Computing Systems Design, Inc.
  164.                                   4437 Ormond Trace
  165.                                Marietta, Georgia 30066
  166.                                            
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.                                     Page 3
  199.  
  200.  
  201.  
  202.  
  203.  
  204.                               Concept Of Operation
  205.  
  206.         PowerBatch is a compiler for a very high level language. A high level
  207.         language is one which requires a small number of commands to generate
  208.         code to perform a task. This is at the opposite end of the spectrum
  209.         from a low level language which requires a large number of commands to
  210.         perform a specified task. Low level languages allow the programmer to
  211.         operate at the "bits and bytes" level but generally requires a high
  212.         level of familiarity with both the computer and the language itself.
  213.         Low level languages generally produce code segments that are of
  214.         minimum size and maximum speed. High level languages produce solutions
  215.         that are easier and quicker to develop with some compromise in size
  216.         and speed.
  217.  
  218.         PowerBatch has attempted to make development of executable modules as
  219.         easy as possible and produce modules that are fast in execution. Power
  220.         Batch is a development tool that will allow experienced programmers to
  221.         develop applications in a minimum of time. It is designed to introduce
  222.         non-programmers to the creative world of programming. Error checking
  223.         and all the details that the experienced programmer builds into a
  224.         professional program are included automatically in every PowerBatch
  225.         compiled module.
  226.  
  227.         In addition to the more than 100 commands in the PowerBatch language,
  228.         any valid executable command (.EXE & .COM) as well as any of the DOS
  229.         intrinsic commands are valid within a PowerBatch source file and will be
  230.         "compiled". These .EXE, .COM and DOS intrinsic commands will be
  231.         executed via a shell and the PowerBatch .EXE program will continue
  232.         execution with the next compiled statement following the shelled
  233.         command. There are two main modules supplied with PowerBatch;
  234.         1)POWERMAK.EXE and 2)SMLMODEL.MDL. POWERMAK reads,parses the source file
  235.         and compiles the source code extracting routines from SMLMODEL. The
  236.         result is a completely standalone .EXE file that executes without
  237.         SMLMODEL or PowerBatch.
  238.  
  239.         PowerBatch commands fall into 5 classes of commands;
  240.  
  241.               1) Commands which provide systems information. These commands
  242.               provide the current color settings, the current date, the
  243.               current time, check for the existence of a valid drive letter,
  244.               and commands which check for the existence of a directory or a
  245.               file.
  246.  
  247.               2) Commands which control the flow of the program. Execute
  248.               different portions of the program based on existence or non-
  249.  
  250.  
  251.                                     Page 4
  252.  
  253.  
  254.  
  255.  
  256.  
  257.               existence of directories or files. Compare the contents of one
  258.               variable with the contents of another variable or a constant
  259.               and execute different portions of the batch program based on
  260.               the results of the compare.
  261.  
  262.               3) Commands which read and write strings of text.  These strings
  263.               of text may be "records" written to a disk as a file or
  264.               elements of an array written to a dynamically expanding array
  265.               in the memory area outside of the compiled program.
  266.  
  267.               4) Commands which provide string manipulation. Change a string to
  268.               all upper case characters, or all lower case characters.
  269.               Extract a portion of a string such as the first three
  270.               characters or the last four characters. Build a new string from
  271.               two existing strings by concatenation of the two strings.
  272.  
  273.               5) Commands which deal with screen writing and input from the
  274.               keyboard. These commands are the main power in the PowerBatch
  275.               system. Directly address any position on the screen and move
  276.               the cursor to that position to read or write text.
  277.               Automatically center a message or title on any line. Draw boxes
  278.               around portions of the screen to enhance screen appearance.
  279.               Read a single key from the keyboard, read the response to a
  280.               query that only accepts a yes or no response, read a string of
  281.               characters from the keyboard with a specified maximum length,
  282.               and read keys from the keyboard automatically changing the
  283.               characters to upper case.
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.                                     Page 5
  305.  
  306.  
  307.  
  308.  
  309.  
  310.                                      Installation
  311.  
  312.         Installation is accomplished by executing the PBInstal program. It
  313.         seemed only fitting that this install program be a compiled PowerBatch
  314.         program.  The two main modules POWERMAK.EXE and SMLMODEL.MDL must be
  315.         located in the DOS path to allow you to compile PowerBatch programs from
  316.         any directory on your system. PowerBatch may be run on a system as small
  317.         as a single floppy drive system with 128K. There will be some limit to
  318.         the number of source statements that may be compiled on a system this
  319.         small as memory is dynamically allocated as compilation progresses. A
  320.         source file of several hundred statements can be compiled on a small
  321.         machine. The PBInstal program is strictly a file copy program. It will
  322.         ask you where you wish to place the PowerBatch files and copy them to
  323.         the specified directory. You may copy your own files to various
  324.         directories if you desire. You may even copy POWERMAK.EXE and
  325.         SMLMODEL.MDL to a directory not on your path if you desire. If you do
  326.         so, you may compile only from the directory containing these two
  327.         files.
  328.  
  329.         PowerBatch may be installed from either drive A or B.
  330.  
  331.         Place your PowerBatch installation disk in either drive A or drive B.
  332.         Change to the drive which contains the install disk by typing
  333.            A: <Enter>
  334.         or
  335.            B: <Enter>
  336.  
  337.         Run the installation program by entering
  338.         
  339.            PBINSTAL <Enter>
  340.  
  341.         Follow the onscreen instructions to copy both the compiler and the
  342.         example files to your disk. Remember that you must copy both
  343.         POWERMAK.EXE  and  SMLMODEL.MDL to a directory defined to be in the DOS
  344.         search path in order to compile programs from any directory. If you do
  345.         not place these programs in a directory on the search path, you will
  346.         be able to compile from only the directory where they reside.
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355.  
  356.  
  357.                                     Page 6
  358.  
  359.  
  360.  
  361.  
  362.  
  363.                          Constructing A PowerBatch Source File
  364.  
  365.         Use your favorite text editor to create a printable ASCII file
  366.         containing PowerBatch source commands and DOS executable commands. A
  367.         printable ASCII file is one that may be typed to the screen (i.e. type
  368.         myfile.pwr <enter>) and the results printed on the screen contain only
  369.         the file contents. Most files created with a word processor are not
  370.         printable ASCII files unless you specify an ASCII file output option.
  371.  
  372.         Compile your source statements to create a .EXE executable module.
  373.         This is done using the PowerBatch compiler. The syntax is:
  374.  
  375.            POWERMAK MyFile [OutFile] [+M] [+D2] [+O]
  376.  
  377.         PowerBatch assumes the extension of the input file to be .PWR (i.e.
  378.         MYFILE.PWR) and will create an output file of MYFILE.EXE if no OutFile
  379.         parameter is specified. The input source file may be any DOS name of
  380.         your choice (including the extension). You may also specify an output
  381.         file name of your choice but the extension will always be .EXE. If you
  382.         do not enter the input file name on the command line, the program will
  383.         prompt you for the name. You must at this time enter the complete name
  384.         including the extension.
  385.  
  386.         If you wish to generate a list of all literals, variables, and labels
  387.         used in your PowerBatch program, add +M to the end of the command line.
  388.         This variable map will be written to the [FileName].MAP file.
  389.  
  390.         If you will be running the output from the compilation on any computer
  391.         that is operating under a version of DOS that is earlier than DOS
  392.         version 3.0, you must enter the compiler directive +D2. This directive
  393.         will cause the compilation to be much slower but the resulting .EXE
  394.         file will execute on computers running on DOS 3.0 and up at the SAME
  395.         SPEED as compilations made without the +D2 directive. If in doubt, use
  396.         +D2. A minute of compile time will eliminate future problems. If you
  397.         compile a program that has been compiled before and has generated an
  398.         .EXE file, you will be asked if you wish to replace this EXE file. To
  399.         compile in batch mode or to bypass this message use the overwrite parm
  400.         +O.
  401.  
  402.         If the compiler finds no compilation errors, the compiled version of
  403.         your source file will be generated. For an explanation of compilation
  404.         errors, see the section entitled "Compilation Errors". Compilation
  405.         errors appear on your screen as they are encountered and they are
  406.         written to a file named [FileName].MAP (i.e. if your input file name
  407.         is MYFILE.PWR, the error and map file will be MYFILE.MAP). The entire
  408.  
  409.  
  410.                                     Page 7
  411.  
  412.  
  413.  
  414.  
  415.  
  416.         source code is scanned each time you compile a PowerBatch program (i.e.
  417.         the compiler does not stop when an error is found, but attempts to
  418.         identify all errors on each pass). This means that some errors will be
  419.         the result of previous errors found in the source.
  420.  
  421.         If there are no compilation errors, the [FileName].MAP file will not
  422.         be created.
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.                                     Page 8
  464.  
  465.  
  466.  
  467.  
  468.  
  469.                                   PowerBatch Commands
  470.  
  471.         Commands, Variable Names, and Labels are not case sensitive.
  472.         Everything on the command source line is converted to upper case
  473.         except a literal which is enclosed within quotes. Either single
  474.         quotes(') or double quotes(") may be used to denote a literal.
  475.         Literals which are numeric such as color values, variable lengths,
  476.         etc. should not be enclosed in quotes. The compiler does evaluate each
  477.         literal (both alpha and numeric) in the same manner. The evaluation
  478.         process is 1) remove leading and trailing quotes if any, 2) attempt to
  479.         convert literal to numeric, 3) if numeric conversion is successful,
  480.         consider it a number, 4) if numeric conversion is unsuccessful,
  481.         consider it alpha numeric. This means that internally an operand of 3
  482.         and "3" will both be numeric.
  483.  
  484.         A semicolon which is not enclosed within quotes or a part of a command
  485.         is used to denote a comment. Semicolons which are part of a command
  486.         must not be preceded by a space. A comment begins with a semicolon
  487.         which follows a space not within quotes. Comments may appear anywhere
  488.         on the command line, but everything after a semicolon on a command
  489.         line is ignored. A comment may begin in column 1 by placing the
  490.         semicolon in column 1. The following are NOT comments:
  491.  
  492.            path=d:\;c:\util;c:\wp
  493.            path   "d:\;c:\util;c:\wp"
  494.            WriteLine   "Punctuation may be used within quotes;"
  495.  
  496.         These ARE comments:
  497.  
  498.            Variable ColorSave,3 ;save the original color
  499.            SetVar   Msg, ErrMsg ;set Msg to "Invalid input"
  500.  
  501.         The starting location on the command line of the command and the
  502.         operands is not important and tabs and spaces may be freely used for
  503.         readability.
  504.  
  505.         Variable names and command labels may be any length in the source but
  506.         are significant only through the first eight positions. This means
  507.         that any variable name or label that is equal in the first 8 positions
  508.         will be considered the same.
  509.  
  510.         Variables, Literals, and Labels
  511.  
  512.         Variables
  513.         A variable is a location in memory that you allocate and give a name
  514.  
  515.  
  516.                                     Page 9
  517.  
  518.  
  519.  
  520.  
  521.  
  522.         and a maximum length. Anytime you refer to the "name" of the variable,
  523.         you are referencing the memory locations set aside for this variable.
  524.         Variable names give you an easy way to manipulate data internally
  525.         within the computer. The following are examples of variables:
  526.  
  527.            Variable    CharIn,1
  528.  
  529.         This variable gives the name "CharIn" to one memory position. It might
  530.         be used to hold one character responses from the keyboard by the user.
  531.  
  532.  
  533.            Variable    PBDir,79
  534.  
  535.         This variable appears in the PBInstal program and holds the name of
  536.         the directory where the PowerBatch compiler will be placed. It is
  537.         composed of the drive letter and directory entered by the user in
  538.         response to two questions during the installation process.
  539.  
  540.            Variable    CompName,35,"The ABC Company"
  541.  
  542.         This variable reserves 35 positions in memory and gives these
  543.         locations the name CompName. The PowerBatch compiler also places the
  544.         initial value "The ABC Company" in the first 15 positions of the
  545.         variable. The value of this variable may be changed by later
  546.         processing in the program. When this variable is referenced in the
  547.         program it will contain only 15 characters (The ABC Company) with no
  548.         leading or trailing spaces, assuming the program has not assigned a
  549.         new value.
  550.  
  551.            Variable    MsgClear,20,"                    "
  552.  
  553.         This variable contains 20 spaces and is named MsgClear. It will be
  554.         used to "clear" or overwrite with spaces an error message in your
  555.         program. Once you have displayed a message to the user, it should be
  556.         cleared as you continue with the program. This is done by overwriting
  557.         with spaces. Having a variable with the correct number of spaces makes
  558.         this task easier.
  559.  
  560.  
  561.  
  562.         Literals
  563.         Literals are very much like variables which have a value but no name.
  564.         Literals are used in PowerBatch commands when you wish to pass an actual
  565.         value to the command instead of a variable. Note in the following
  566.         examples that literals containing numbers only are not enclosed in
  567.  
  568.  
  569.                                     Page 10
  570.  
  571.  
  572.  
  573.  
  574.  
  575.         quotes and literals containing any non-numeric characters are enclosed
  576.         in quotes. If you specify a number as a literal, either convention is
  577.         acceptable (3 or "3"). If you specify alphabetic characters, the
  578.         quotes are required. For readability, and ease of entry, numeric
  579.         literals usually do not contain quotes. Examine the following examples
  580.         of literals:
  581.  
  582.            Center      "Installation Program",1
  583.  
  584.         This command will center the literal "Installation Program" on line 1
  585.         of the screen. The text "Installation Program" must appear somewhere
  586.         in the program and it appears as a literal. It will occupy memory
  587.         positions and will have a value but you may not reference this value
  588.         by name. By instructing the compiler to write this literal, the
  589.         compiler automatically creates the memory locations and initial value
  590.         but gives it no name. The 1 is also a literal in this command. Each
  591.         time you use a literal in a PowerBatch program, the previously assigned
  592.         literals are checked for duplication and if the literal has been
  593.         previously assigned, the prior assignment will be used (i.e. literal
  594.         values will appear only one time regardless of the number of times
  595.         used).
  596.  
  597.            WriteAt     12,3,Msg1
  598.  
  599.         There are two literals in this command. The numbers 12 and 3 are both
  600.         created as literals. In this command they specify the column and row
  601.         location where the string Msg1 will be written. Again, the compiler
  602.         creates the memory locations and values for these literals, but no
  603.         names. If you were to write another command such as the Beep command
  604.         which specifies that the system speaker will beep at a certain
  605.         frequency for 3 times, the compiler will find the previously defined
  606.         literal "3" and use this value instead of creating another literal.
  607.  
  608.            Beep        ErrTone,8,3
  609.  
  610.         This is the Beep command referenced in the previous example. The beep
  611.         command will cause the speaker to sound at a frequency of ErrTone for
  612.         .8 second and repeat 3 times. The "3" literal will use the same memory
  613.         location reference as the WriteAt command used in the previous command
  614.         (i.e. another literal will not be created).
  615.  
  616.         Labels
  617.  
  618.  
  619.  
  620.  
  621.  
  622.                                     Page 11
  623.  
  624.  
  625.  
  626.  
  627.  
  628.         Labels are names of a particular place in your PowerBatch program that
  629.         you will go to without executing the previous command. You go directly
  630.         to this location in the program from another location in the program
  631.         based on a decision you have made in the code flow. Examples will help
  632.         explain:
  633.  
  634.            ReadYN      "Do you wish to continue [Y/N] ",InChar
  635.            Compare     InChar,"Y",,,GetDrive
  636.            Halt        999      ;end the program if "N"
  637.  
  638.            Label       GetDrive
  639.  
  640.         This group of commands writes the message on the screen and asks the
  641.         user to input either Y or N (the command will only accept these two
  642.         characters). A comparison is then made to a literal "Y" and the
  643.         compare command will jump to the location in the program named
  644.         GetDrive if a "Y" was entered or will execute the next command if "N"
  645.         was entered.
  646.            GoTo        NextCmd
  647.            .
  648.            .
  649.            .
  650.            Label       NextCmd
  651.  
  652.         In this most straightforward use of the label, the user simply uses
  653.         the GoTo command and jumps unconditionally to another point in the
  654.         program.
  655.  
  656.         External Commands
  657.         External commands are entered just as PowerBatch commands are entered.
  658.         If you enter an external command and this command uses command line
  659.         parameters, these parameters may be passed as either variables or
  660.         literals. Remember that if the parameter is not numeric, it must be
  661.         enclosed in quotes or it will be treated as a variable. Any PowerBatch
  662.         statement which is an external command may contain a maximum of 7
  663.         command line variables. That is not to say that you may not pass more
  664.         than 7 command line parameters to an external program but that these
  665.         command line variables may not be contained in more that 7 PowerBatch
  666.         variables.
  667.  
  668.         For example:
  669.            Variable Parm1,5,"one"
  670.            Variable Parm2,5,"two"
  671.            Variable Parm3,5,"three"
  672.            Variable Parm4,5,"four"
  673.  
  674.  
  675.                                     Page 12
  676.  
  677.  
  678.  
  679.  
  680.  
  681.                            Variable Parm5,5,"five"
  682.            Variable Parm6,5,"six"
  683.            Variable Parm7,5,"seven"
  684.            Variable Parm8,5,"eight"
  685.            Variable BigParm,80
  686.  
  687.            ExtPgm   (Name of an external program)
  688.          
  689.         A valid method for passing these parms in one PowerBatch parameter.
  690.  
  691.            Extpgm   "one two three four five six seven eight"
  692.  
  693.         Accomplishing the same thing with variables using 6 PowerBatch parms.
  694.  
  695.            Concat   BigParm,Parm1," "
  696.            Concat   BigParm,Parm2
  697.            Concat   BigParm," "
  698.            Concat   BigParm,Parm3
  699.            ExtPgm   BigParm,Parm4,Parm5,Parm6,Parm7,Parm8
  700.  
  701.         Examples of external programs as PowerBatch commands:
  702.  
  703.            Variable    InChar,1
  704.            ReadYN      "Do you wish a directory ",InChar
  705.            Compare     InChar,"Y",NextSec,NextSec
  706.            DIR         "/W"
  707.            SETUP    "> null"    ;printer redirection
  708.  
  709.            Variable    PgmName,12
  710.            Write    "Enter program name to compile "
  711.            ReadStr     PgmName
  712.            TPC         PgmName, "/ddebug"
  713.  
  714.         This third example of external commands show the use of two predefined
  715.         variables, ERRORLEVEL and DOSERROR. After the execution of "TestPgm",
  716.         we examine DOSError to find if the program executed OK (Possibly there
  717.         was not enough memory or the program could not be found on the DOS
  718.         path). After determining that the program executed OK, we examine the
  719.         exit code set by "TestPgm" to determine the flow of the remainder of
  720.         our program. This exit code will be found in the variable ERRORLEVEL.
  721.  
  722.            Variable    MsgLine,80
  723.            .
  724.            .
  725.            TestPgm     "Parm1 Parm2"
  726.  
  727.  
  728.                                     Page 13
  729.  
  730.  
  731.  
  732.  
  733.  
  734.                            Compare     DOSError,0,,,RanOK
  735.            WriteLine      "TestPgm did not execute properly"
  736.            Halt        DOSError
  737.            Label    RanOK
  738.            Compare     ErrorLevel,1,Chk2,,Option1
  739.            Concat      MsgLine,"Unexpected code : ",ErrorLevel
  740.            Halt
  741.            Label       Option1
  742.  
  743.         Note: PowerBatch programs may be executed by other PowerBatch programs as
  744.         external commands. An option of the PowerBatch Halt command is to set
  745.         the DOS errorlevel. You could then "pass parameters" from one PowerBatch
  746.         program to another via the ERRORLEVEL variable.
  747.  
  748.         Command Line Parameters
  749.         Command line parameters may be passed to a compiled PowerBatch program.
  750.         These command line parameters must be defined at compile time and have
  751.         special variable names. Up to 16 parameters may be passed to a
  752.         PowerBat program. These parameters are named CLP%1 - CLP%16.
  753.         If you wish to pass parameters on the command line to your PowerBatch
  754.         program, define the command line parameter variables (CLP%1 - CLP%16)
  755.         in your PowerBatch source prior to compilation and when you run the
  756.         compiled program, any parameters entered on the command line will be
  757.         in the defined variable. Example:
  758.  
  759.            Source for SMARTCPY.PWR
  760.  
  761.            Variable    CLP%1,79    ;source file
  762.            Variable    CLP%2,79    ;target file
  763.            Variable    InChar,1
  764.            ReadYN      "Ready to copy the files [Y/N] ",InChar
  765.            Compare     InChar,"Y",NoCopy,NoCopy
  766.            COPY        CLP%1, CLP%2
  767.  
  768.         SMARTCPY FILE1 FILE2 will execute the DOS copy command and copy FILE1
  769.         to FILE2 if the user responds Y to the question.
  770.  
  771.         Changing Environment Variables
  772.  
  773.         Your computer memory contains a special area of memory called the
  774.         "Environment Area". This special area of memory contains the values
  775.         assigned to variables that are available to the DOS operating system
  776.         or to any application program running in your computer. These values
  777.         remain unchanged until DOS or an application program changes them. DOS
  778.         maintains special values in this area which the operating system uses.
  779.  
  780.  
  781.                                     Page 14
  782.  
  783.  
  784.  
  785.  
  786.  
  787.         Your current path and current prompt configuration are two of these
  788.         values. These values are normally set with the DOS PROMPT or PATH
  789.         command. If an application program like a compiled PowerBatch program
  790.         executes a DOS command, it is done via a "shell" or another copy of
  791.         your command processor (normally COMMAND.COM) which is started to
  792.         handle the execution of these DOS commands. When a shell is started,
  793.         DOS creates a copy of the environment area for this new shell and
  794.         makes the environment values available to the shell. Unfortunately,
  795.         when the shell is terminated (when the DOS command is complete) this
  796.         copy of the environment is erased from memory. If you execute a
  797.         PROMPT, PATH or SET [Variable] command, the copy of the environment
  798.         created for the shell to run the PROMPT, PATH, or SET command is
  799.         updated and immediately erased when the PowerBatch program is finished.
  800.         PowerBatch however, provides you a means to update both the permanent
  801.         copy and the current copy of the environment area with the commands
  802.         SETPATH, SETENV, and PROMPT.
  803.  
  804.         Unfortunately, problems dealing with the environment area do not end
  805.         here. When DOS runs a program (like a PowerBatch compiled program), a
  806.         copy of the permanent environment is made and is the "active"
  807.         environment area in use during the running of the program. If you only
  808.         read the values of existing environment variables, there is no
  809.         problem. If you attempt to add new environment values, the amount of
  810.         free environment space is very limited. IT IS NOT THE AMOUNT OF SPACE
  811.         ALLOCATED BY YOU IN YOUR CONFIG.SYS FILE (or the default) MINUS THE
  812.         AMOUNT OF USED SPACE! The amount of "free" space appears to be only
  813.         the amount left after rounding up the amount of used space to the
  814.         nearest paragraph of memory (16 bytes).
  815.         The problem of allocating environment free space can be circumvented
  816.         by updating the permanent environment area with dummy values prior to
  817.         the execution of your PowerBatch file. This could be done with a small
  818.         PowerBatch program such as ENV-INIT.PWR as follows:
  819.  
  820.            SetEnv   Env1,'dummy value dummy value'
  821.            SetEnv   Env2,'dummy value dummy value'
  822.            .
  823.            .
  824.            .
  825.         When ENV-INIT terminates, the environment variables Env1 and Env2 will
  826.         have the dummy values and will now be a part of any environment area
  827.         copy passed to a running program. You could of course use the DOS SET
  828.         command from the DOS command line or initialize the environment
  829.         variables with dummy values in your AUTOEXEC.BAT file.
  830.  
  831.         Command Notation
  832.  
  833.  
  834.                                     Page 15
  835.  
  836.  
  837.  
  838.  
  839.  
  840.         In the description of the commands which follow, that which appears
  841.         within brackets [ ] is optional and all other operands are required.
  842.         Any time a screen color may be specified in a command such as
  843.  
  844.            CLEARLINE LineNum,ForegrClr,BackgrClr
  845.  
  846.         the single attribute which is used in many color conventions may be
  847.         substituted for the pair of color attributes. For example, foreground
  848.         color 4 (red), background color 1 (blue), is identical to color
  849.         attribute 20 and the CLEARLINE command may be specified EITHER as 
  850.  
  851.            CLEARLINE 14,4,1
  852.         or
  853.            CLEARLINE 14,20
  854.  
  855.         to clear line 14 on the screen to red foreground on blue background.
  856.         For this reason anytime that the operand pair of foreground color,
  857.         background color is required, the single color attribute may be
  858.         substituted for the pair. The compiler will not detect missing
  859.         background color attributes but will assume that the foreground is the
  860.         composite value.
  861.  
  862.         How do I calculate this color attribute? The composite color attribute
  863.         is the DOS shorthand method of keeping both the foreground and
  864.         background colors in one byte of memory. It may be calculated by
  865.         multiplying the background color by 16 and adding the foreground
  866.         color. See Appendix B for a complete list of composite color
  867.         attributes.
  868.  
  869.         Color Attribute = (Backgrnd X 16) + Foregrnd
  870.         RedOnBlue = (1 X 16) + 4 = 20
  871.         WhiteOnBlack = (0 X 16) + 7 = 7
  872.         YellowOnRed = (4 X 16) + 14 = 78
  873.         DOS uses the ASCII values 0 through 127 for all the colors available.
  874.         To make any color blink, add 128 to the color value.
  875.  
  876.         YellowOnRed,Blinking = 78 + 128 = 206.
  877.  
  878.         Command Syntax
  879.  
  880.         Several examples are available on the distribution disk. All source
  881.         code examples have a file extension of .PWR. These examples may be
  882.         edited with your favorite text editor and printed by "copying" the
  883.         file to the printer such as COPY PBINSTAL.PWR LPT1.
  884.  
  885.  
  886.  
  887.                                     Page 16
  888.  
  889.  
  890.  
  891.  
  892.  
  893.                        ?COLOR Foreground, Background, Composite
  894.  
  895.         Retrieve the current color attributes from the system and place the
  896.         current foreground color in ForeGround, the current background color
  897.         in BackGround, and the composite attribute in Composite. The
  898.         relationship is Composite = (BackGround * 16) + ForeGround. See
  899.         Appendix B for complete list of composite color attributes.
  900.  
  901.               Variable ForeColor,3
  902.               Variable BackColor,3
  903.               Variable ColorAttr,3
  904.               ?Color   ForeColor,BackColor,ColorAttr
  905.  
  906.         Retrieve the current foreground, background and composite color values
  907.         and place in the variables ForeColor, BackColor, and ColorAttr
  908.         respectively. To create professional programs it is a good idea to
  909.         retrieve the current color setting as the first command in the program
  910.         and reset these values and clear the screen at the end of your
  911.         program. This restores the users computer to the same color state that
  912.         you found when your PowerBatch program was executed.
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.  
  932.  
  933.  
  934.  
  935.  
  936.  
  937.  
  938.  
  939.  
  940.                                          Page 17
  941.  
  942.  
  943.  
  944.  
  945.  
  946.                           ?CURRDIR CurrDrive, CurrDirectory
  947.  
  948.         Retrieve the current drive and directory from the system and place the
  949.         current drive in CurrDrive and the current directory in CurrDirectory.
  950.         The contents of CurrDrive prior to execution of this command control
  951.         which drive is searched for the currently logged directory. If
  952.         ?CurrDir finds a valid drive letter in the first position of
  953.         CurrDrive, then the contents of CurrDirectory will be the currently
  954.         logged directory of that drive. If the first position of CurrDrive
  955.         does not contain a valid drive letter, then CurrDirectory will contain
  956.         the currently logged directory of the current drive. In either case
  957.         CurrDrive will contain the drive and CurrDirectory will contain the
  958.         directory.
  959.  
  960.            Variable    CurrDrive,2
  961.            Variable    CurrDir,79
  962.            SetVar      CurrDrive,"A"
  963.            ?CurrDir    CurrDrive,CurrDir
  964.            SetVar      CurrDrive,""
  965.            ?CurrDir    CurrDrive,CurrDir
  966.  
  967.         In the first usage of ?CurrDir, assuming that the currently logged
  968.         directory on the A drive is the root directory, CurrDrive will contain
  969.         "A" and CurrDir will contain "\" after the execution of ?CurrDir. In
  970.         the second usage, assuming that the currently logged drive is D: and
  971.         the currently logged directory on the D: drive is "\UTIL\EXEC",
  972.         CurrDrive will contain "D" and CurrDir will contain "\UTIL\EXEC" after
  973.         the execution of ?CurrDir.
  974.  
  975.  
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.                                     Page 18
  994.  
  995.  
  996.  
  997.  
  998.  
  999.                           ?DATE DayOfWeek, Month, Day, Year
  1000.  
  1001.         Retrieve the current date from the system and place the day of the
  1002.         week in DayOfWeek, the month in Month, the day in Day, and the 4 digit
  1003.         year in Year. DayOfWeek should be defined as 9 long, Month and Day as
  1004.         2 long, and Year as 4 long.
  1005.  
  1006.            Variable DOW,9
  1007.            Variable Mo,2
  1008.            Variable Da,2
  1009.            Variable Yr,4
  1010.            ?Date DOW,Mo,Da,Yr
  1011.  
  1012.         Retrieve the current date and place the component parts in their
  1013.         respective variables. Place the day of the week in DOW (i.e.
  1014.         Saturday), the month number in Mo (i.e. 06), the day of the month in
  1015.         Da (i.e. 29), and the year in Yr (i.e. 1993).
  1016.  
  1017.  
  1018.  
  1019.  
  1020.  
  1021.  
  1022.  
  1023.  
  1024.  
  1025.  
  1026.  
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.                                     Page 19
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.                       ?DIREXIST DirName, FoundLbl [,NotFoundLbl]
  1053.  
  1054.         Check the system for the existence of the directory whose name appears
  1055.         in DirName. If the directory exists go directly to the label FoundLbl,
  1056.         if the directory does not exist, go directly to the label NotFoundLbl.
  1057.         DirName may either be a variable or a literal. If NotFoundLbl is not
  1058.         specified, execution will continue with the next instruction
  1059.         immediately following the ?DirExist command.
  1060.  
  1061.            ?DirExist   InpStr,DirOk,BadDir
  1062.            ?DirExist   "C:\",DirOK,BadDir
  1063.            ?DirExist   InpStr,,BadDir  (next command if exists)
  1064.            ?DirExist   InpStr,DirOk    (next command if not exist)
  1065.  
  1066.         In the first example if the contents of the variable InpStr exists
  1067.         then goto label DirOK, if it does not exist go to the label BadDir. In
  1068.         the second example we check for the existence of a directory contained
  1069.         in the literal whose value is "C:\". In the third example, if the
  1070.         contents of InpStr exist we "fall through" to the next instruction, if
  1071.         the directory does not exist we jump to the label BadDir. In the
  1072.         fourth example, if the directory name in InpStr exists, we jump to the
  1073.         label DirOK, if it does not exist we fall through to the next command.
  1074.  
  1075.  
  1076.  
  1077.  
  1078.  
  1079.  
  1080.  
  1081.  
  1082.  
  1083.  
  1084.  
  1085.  
  1086.  
  1087.  
  1088.  
  1089.  
  1090.  
  1091.  
  1092.  
  1093.  
  1094.  
  1095.  
  1096.  
  1097.  
  1098.  
  1099.                                     Page 20
  1100.  
  1101.  
  1102.  
  1103.  
  1104.  
  1105.                                                ?DISKINFO DriveLetter, VolID, DriveType
  1106.  
  1107.         The volume ID is retrieved from the DriveLetter drive and the type of
  1108.         drive is determined and placed in DriveType. Volume ID may be a string
  1109.         of up to 12 characters. All disk media is not required to contain a
  1110.         Volume ID and in this case VolID will contain "No Label". The
  1111.         DriveType will be one of the following values:
  1112.            "360 Floppy"      "720 Floppy"      "1.2 Floppy"
  1113.            "1.4 Floppy"      "Other Floppy" "Bernoulli"
  1114.            "HardDisk"     "RamDisk"      "SubDrive"
  1115.            "Unknown"      "Invalid"
  1116.  
  1117.            Variable Drive,1,'D'
  1118.            Variable VolumeID,12
  1119.            Variable DriveType,12
  1120.  
  1121.            ?DiskInfo   Drive,VolumeID,DriveType
  1122.            Compare  DriveType,'RamDisk',,,RamOK
  1123.            Write Drive
  1124.            WriteLine   ' is not a RAM drive!'
  1125.            Halt
  1126.  
  1127.            Label RamOK
  1128.  
  1129.  
  1130.  
  1131.  
  1132.  
  1133.  
  1134.  
  1135.  
  1136.  
  1137.  
  1138.  
  1139.  
  1140.  
  1141.  
  1142.  
  1143.  
  1144.  
  1145.  
  1146.  
  1147.  
  1148.  
  1149.  
  1150.  
  1151.  
  1152.                                     Page 21
  1153.  
  1154.  
  1155.  
  1156.  
  1157.  
  1158.                     ?DISKSPACE DriveLetter, TotalSpace, FreeSpace
  1159.  
  1160.         Query the disk Drive specified by the first character of DriveLetter
  1161.         and place the total disk capacity in bytes in TotalSpace and the
  1162.         unused bytes in FreeSpace. Since the command looks at only the first
  1163.         character of DriveLetter, this parameter may contains strings such as
  1164.         "C:\UTIL". DriveLetter may be either a Variable or a Literal.
  1165.  
  1166.            Variable    DirName,79
  1167.            Write    'Enter your full pathname'
  1168.            ReadStr     DirName  (user enters "c:\util")
  1169.            ?DiskSpace  DirName,TotSpace,FreeSpace
  1170.  
  1171.         This will place the total capacity of drive C: in the variable
  1172.         TotSpace and the amount of this space that is unused in the variable
  1173.         FreeSpace.
  1174.  
  1175.            ?DiskSpace  "A",TotSpace,FreeSpace
  1176.  
  1177.         This retrieves the total capacity and free space for drive A:  using a
  1178.         literal of "A".
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.  
  1194.  
  1195.  
  1196.  
  1197.  
  1198.  
  1199.  
  1200.  
  1201.  
  1202.  
  1203.  
  1204.  
  1205.                                     Page 22
  1206.  
  1207.  
  1208.  
  1209.  
  1210.  
  1211.                  ?DRIVEEXIST DriveLetter, ValidLabel [,InvalidLabel]
  1212.  
  1213.         Check the system for DriveLetter as a valid drive. If the drive is
  1214.         valid, jump to Label1, if the drive is not valid, jump to Label2. If
  1215.         InvalidLabel is not specified, execution will continue with the next
  1216.         command immediately following the ?DriveExist command. DriveLetter may
  1217.         be either a variable or a literal.
  1218.  
  1219.            ?DriveExist DrvNum,GoodDrv,BadDrv
  1220.            ?DriveExist "A",GoodDrv,BadDrv
  1221.            ?DriveExist DrvNum,,BadDrv (falls thru if drive ok)
  1222.            ?DriveExist DrvNum,GoodDrv (falls thru if drive bad)
  1223.  
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234.  
  1235.  
  1236.  
  1237.  
  1238.  
  1239.  
  1240.  
  1241.  
  1242.  
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.                                     Page 23
  1259.  
  1260.  
  1261.  
  1262.  
  1263.  
  1264.                        ?ENVSTR EnvironName, EnvironNameContents
  1265.  
  1266.         Retrieve the contents of any environment variable from the system
  1267.         environment area. The name of the environment variable is placed in
  1268.         EnvironName or entered as a literal and the contents of the
  1269.         environment variable will be placed in EnvironNameContents. Ensure
  1270.         that EnvironNameContents has been defined long enough to contain the
  1271.         contents of the environment variable. If EnvironNameContents is not
  1272.         long enough, the environment variable will be truncated. To display
  1273.         the currently defined environment variables, use the DOS "SET" command
  1274.         at a DOS prompt. (i.e. C:>SET <enter>) You should receive at least two
  1275.         environment variables (assuming you have set a path) with the format
  1276.         NAME=VALUE. The location of your command processor is in an
  1277.         environment variable named COMSPEC and should look something like
  1278.         this: COMSPEC=C:\COMMAND.COM.
  1279.  
  1280.            Variable    EnvValue,255
  1281.            Variable    EnvName,4,"path"
  1282.            ?EnvStr     "prompt", EnvValue
  1283.            ?EnvStr     EnvName, EnvValue
  1284.  
  1285.  
  1286.  
  1287.  
  1288.  
  1289.  
  1290.  
  1291.  
  1292.  
  1293.  
  1294.  
  1295.  
  1296.  
  1297.  
  1298.  
  1299.  
  1300.  
  1301.  
  1302.  
  1303.  
  1304.  
  1305.  
  1306.  
  1307.  
  1308.  
  1309.  
  1310.  
  1311.                                     Page 24
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.                    ?FILEEXIST FileName, FoundLabel [,NotFoundLabel]
  1318.  
  1319.         Check the system for the specified file name. If the file exists, jump
  1320.         to the label FoundLabel, if the file does not exist, jump to the label
  1321.         NotFoundLabel. If NotFoundLabel is not entered, execution will
  1322.         continue with the next command immediately following the ?FileExist
  1323.         command. If only a file name is entered (i.e. CONFIG.SYS), then only
  1324.         the current directory will be searched. If a fully qualified filename
  1325.         is entered (i.e. C:\CONFIG.SYS), then only the specified directory
  1326.         will be searched. FileName may be either a variable or a literal. See
  1327.         ?FileExpand.
  1328.  
  1329.            ?FileExist  FileName, Label1, Label2
  1330.            ?FileExist  "C:\AUTOEXEC.BAT",StartOK,NoStart
  1331.            ?FileExist  FileName,,NotFound
  1332.            ?FileExist  FileName,Found
  1333.  
  1334.         The two commands ?FileExist and ?FileExpand are identical with the
  1335.         exception that ?FileExist gives you the capability to limit your
  1336.         search to the current directory while ?FileExpand will attempt to find
  1337.         the file anywhere on the disk and tell you exactly where the file was
  1338.         found.
  1339.  
  1340.  
  1341.  
  1342.  
  1343.  
  1344.  
  1345.  
  1346.  
  1347.  
  1348.  
  1349.  
  1350.  
  1351.  
  1352.  
  1353.  
  1354.  
  1355.  
  1356.  
  1357.  
  1358.  
  1359.  
  1360.  
  1361.  
  1362.  
  1363.  
  1364.                                     Page 25
  1365.  
  1366.  
  1367.  
  1368.  
  1369.  
  1370.                   ?FILEEXPAND FileName, FoundLabel [,NotFoundLabel]
  1371.  
  1372.         Check the system for the specified file name. If the file exists, jump
  1373.         to the label FoundLabel, if the file does not exist, jump to the label
  1374.         NotFoundLabel. If NotFoundLabel is not entered, execution will
  1375.         continue with the next command immediately following the ?FileExist
  1376.         command. If FileName contains a drive and/or path in addition to the
  1377.         filename (i.e. C:\CONFIG.SYS or \CONFIG.SYS), the specified drive and
  1378.         directory is searched. If only a filename is placed in FileName, then
  1379.         the search contains the following: 1) the current directory, 2) the
  1380.         directory from which the compiled PowerBatch program was run, 3) all
  1381.         directories on the search path. (I try to find it in any directory on
  1382.         the disk which I know exists). If the file was found, the full path
  1383.         name\filename is placed in FileName. For this reason FileName must be
  1384.         a variable. Ensure that FileName is long enough to handle this full
  1385.         pathname!
  1386.  
  1387.            SetVar      FileName,'MYFILE.LTR'
  1388.            ?FileExist  FileName, Label1, Label2
  1389.  
  1390.         Assuming that MYFILE.DAT was located in "\WP60\LETTERS", the contents
  1391.         of FileName will be "C:\WP60\LETTERS\MYFILE.LTR".
  1392.  
  1393.            ?FileExist  "C:\AUTOEXEC.BAT",StartOK,NoStart
  1394.  
  1395.         ERROR! FileName cannot be a literal.
  1396.  
  1397.         The two commands ?FileExist and ?FileExpand are identical with the
  1398.         exception that ?FileExist gives you the capability to limit your
  1399.         search to the current directory while ?FileExpand will attempt to find
  1400.         the file anywhere on the disk and tell you exactly where the file was
  1401.         found.
  1402.  
  1403.  
  1404.  
  1405.  
  1406.  
  1407.  
  1408.  
  1409.  
  1410.  
  1411.  
  1412.  
  1413.  
  1414.  
  1415.  
  1416.  
  1417.                                     Page 26
  1418.  
  1419.  
  1420.  
  1421.  
  1422.  
  1423.                              ?FILESIZE FileSize, FileName
  1424.  
  1425.         The size in bytes of FileName is placed in FileSize. FileName may be
  1426.         either a variable or a literal. FileSize must be a variable.
  1427.  
  1428.            Variable FileSize,11
  1429.            Variable FileName,'AUTOEXEC.BAT'
  1430.  
  1431.            CD    'C:\'       ;change drive and dir
  1432.            ?FileSize   FileSize, FileName   ;find the filesize
  1433.            ?FileSize   FileSize, 'AUTOEXEC.BAT' ;same results
  1434.  
  1435.  
  1436.  
  1437.  
  1438.  
  1439.  
  1440.  
  1441.  
  1442.  
  1443.  
  1444.  
  1445.  
  1446.  
  1447.  
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.  
  1457.  
  1458.  
  1459.  
  1460.  
  1461.  
  1462.  
  1463.  
  1464.  
  1465.  
  1466.  
  1467.  
  1468.  
  1469.  
  1470.                                     Page 27
  1471.  
  1472.  
  1473.  
  1474.  
  1475.  
  1476.                     ?INPATH DirName, FoundLabel, [,NotFoundLabel]
  1477.  
  1478.         Compare the contents of DirName to the system search path. If DirName
  1479.         is contained within the path, jump to the label FoundLabel, if DirName
  1480.         is not contained within the path, jump to the label NotFoundLabel. If
  1481.         NotFoundLabel is not specified, execution will continue with the
  1482.         command immediately following the ?InPath command. Use this command to
  1483.         determine if a directory is located in the DOS search path.
  1484.  
  1485.            DOS search path contains "C:\UTIL;C:\WORDPROC;D:\"
  1486.            Variable    InString,79
  1487.            Write    "Enter your directory name "
  1488.            ReadStr     InString (user enters "c:\wordproc")
  1489.            Upper    InString (change to "C:\WORDPROC")
  1490.            ?InPath     InString,PathOK,BadPath
  1491.  
  1492.            ?InPath     "C:\UTIL",,BadPath   (compare literal)
  1493.  
  1494.  
  1495.  
  1496.  
  1497.  
  1498.  
  1499.  
  1500.  
  1501.  
  1502.  
  1503.  
  1504.  
  1505.  
  1506.  
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.                                     Page 28
  1524.  
  1525.  
  1526.  
  1527.  
  1528.  
  1529.                                   ?TIME CurrentTime
  1530.  
  1531.         Retrieve the current time from the system and place in CurrentTime.
  1532.         The format of the time is hh:mm:ss xm. CurrentTime should be defined
  1533.         as 11 long.
  1534.  
  1535.            Variable CurrTime,11
  1536.            ?Time CurrTime (now contains 11:24:14 am)
  1537.  
  1538.  
  1539.  
  1540.  
  1541.  
  1542.  
  1543.  
  1544.  
  1545.  
  1546.  
  1547.  
  1548.  
  1549.  
  1550.  
  1551.  
  1552.  
  1553.  
  1554.  
  1555.  
  1556.  
  1557.  
  1558.  
  1559.  
  1560.  
  1561.  
  1562.  
  1563.  
  1564.  
  1565.  
  1566.  
  1567.  
  1568.  
  1569.  
  1570.  
  1571.  
  1572.  
  1573.  
  1574.  
  1575.  
  1576.                                     Page 29
  1577.  
  1578.  
  1579.  
  1580.  
  1581.  
  1582.                         ADD Sum, Number, [RtnCode], [Decimals]
  1583.  
  1584.         Add the contents of Number to Sum and place the result in Sum. RtnCode
  1585.         will contain zero (0) if the add command completed without error.
  1586.         Decimals contains the number of decimal places for the result. If
  1587.         Decimals is not specified, zero decimal places will be assumed and
  1588.         integer arithmatic will be performed. Your Result will be rounded to
  1589.         the specified number of decimal places.  Accurate to 18 significant
  1590.         digits.
  1591.  
  1592.            Variable    YLoc,2
  1593.            SetVar      YLoc,6
  1594.            Label    LoopCtr
  1595.            ClearLine      YLoc,Blue
  1596.            Add         YLoc,1
  1597.            Compare     YLoc,11,LoopCtr
  1598.  
  1599.         This small code segment will clear lines 6 through 10 on your screen
  1600.         by incrementing the line number variable used by the ClearLine
  1601.         command.
  1602.  
  1603.         Using decimals with PowerBatch math...
  1604.  
  1605.            Variable    AcctBal,12,'127,854.94'
  1606.            Variable    RtnCode,1
  1607.            Add         AcctBal,'122.125',RtnCode,4
  1608.            Compare     RtnCode,0,ErrRtn
  1609.            Write    AcctBal     (contains 127977.065)
  1610.            Multiply    AcctBal,'.000325',RtnCode,6
  1611.            Compare     RtnCode,0,ErrRtn
  1612.            Write    AcctBal     (contains 41.592546)
  1613.  
  1614.  
  1615.  
  1616.  
  1617.  
  1618.  
  1619.  
  1620.  
  1621.  
  1622.  
  1623.  
  1624.  
  1625.  
  1626.  
  1627.  
  1628.  
  1629.                                     Page 30
  1630.  
  1631.  
  1632.  
  1633.  
  1634.  
  1635.                           BEEP Frequency, Duration [,Repeat]
  1636.  
  1637.         Sound the system speaker with a tone of Frequency, for a length of
  1638.         Duration tenths of a second, and repeat Repeat times.
  1639.  
  1640.            Beep  800,5,3
  1641.            Beep  ErrFreq,BeepLen,ErrTimes
  1642.  
  1643.         The first example sounds the system speaker at a frequency of 800 hz
  1644.         for half a second (.5) and repeats twice for a total of 3 times. The
  1645.         second example will sound the system speaker at a frequency equal to
  1646.         the contents of the variable ErrFreq for BeepLen tenths of a second(s)
  1647.         for a total of ErrTimes.
  1648.  
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.  
  1655.  
  1656.  
  1657.  
  1658.  
  1659.  
  1660.  
  1661.  
  1662.  
  1663.  
  1664.  
  1665.  
  1666.  
  1667.  
  1668.  
  1669.  
  1670.  
  1671.  
  1672.  
  1673.  
  1674.  
  1675.  
  1676.  
  1677.  
  1678.  
  1679.  
  1680.  
  1681.  
  1682.                                     Page 31
  1683.  
  1684.  
  1685.  
  1686.  
  1687.  
  1688.                                         BLINK
  1689.  
  1690.         Cause all text that is written to the screen to blink using the
  1691.         current color attributes last defined in the processing of the your
  1692.         program. This command in "undone" by using NORMAL.
  1693.  
  1694.            Variable MsgClear,25."                         "
  1695.            Blink
  1696.            WriteAt  15,4,"Not a valid entry"
  1697.            Normal
  1698.            Wait     35
  1699.            WriteAt  15,4,MsgClear
  1700.  
  1701.         Write the message "Not a valid entry" at column 15 on row 4 using the
  1702.         current color definition. Reset the text color to the value it
  1703.         contained before specifying blinking text. Wait 3.5 seconds and clear
  1704.         the message.
  1705.  
  1706.  
  1707.  
  1708.  
  1709.  
  1710.  
  1711.  
  1712.  
  1713.  
  1714.  
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720.  
  1721.  
  1722.  
  1723.  
  1724.  
  1725.  
  1726.  
  1727.  
  1728.  
  1729.  
  1730.  
  1731.  
  1732.  
  1733.  
  1734.  
  1735.                                     Page 32
  1736.  
  1737.  
  1738.  
  1739.  
  1740.  
  1741.                                          BOOT
  1742.  
  1743.         This command will cause the computer to perform a "warm" boot. This
  1744.         emulates the pressing of the Alt-Ctrl-Del key combination.
  1745.  
  1746.            ReadYN   'Press Y to REBOOT your machine (Y/N) ',YNInput
  1747.            Compare  YNInput,'Y',NoBoot,NoBoot
  1748.            Boot
  1749.            Label NoBoot
  1750.  
  1751.  
  1752.  
  1753.  
  1754.  
  1755.  
  1756.  
  1757.  
  1758.  
  1759.  
  1760.  
  1761.  
  1762.  
  1763.  
  1764.  
  1765.  
  1766.  
  1767.  
  1768.  
  1769.  
  1770.  
  1771.  
  1772.  
  1773.  
  1774.  
  1775.  
  1776.  
  1777.  
  1778.  
  1779.  
  1780.  
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.  
  1787.  
  1788.                                     Page 33
  1789.  
  1790.  
  1791.  
  1792.  
  1793.  
  1794.                        BOXx UX, UY, LX, LY, ForeClr [,BackClr]
  1795.  
  1796.         Where Boxx is Box0 thru Box3. Draw a box (frame) on the screen whose
  1797.         upper left coordinates (X,Y) are UX,UY, and whose lower right
  1798.         coordinates (X,Y) are LX,LY. Draw the box using a line in foreground
  1799.         color ForeClr on background color BackClr. The border line for the box
  1800.         is:
  1801.            Box0 - No border
  1802.            Box1 - Single line
  1803.            Box2 - Double line
  1804.            Box3 - Heavy solid line.
  1805.         The interior of the box is cleared to the background color whether
  1806.         specified explicitly by the background color parameter or as a part of
  1807.         the composite color parameter. The cursor is positioned at UX+1, UY+1.
  1808.  
  1809.            Variable ULX,2,5     ;upper left col value
  1810.            Variable ULY,2,3     ;upper left row value
  1811.            Variable LRX,2,75    ;lower right col value
  1812.            Variable LRY,2,20    ;lower right row value
  1813.            Variable BoxFore,2,4 ;foreground color red
  1814.            Variable BoxBack,2,0 ;background color black
  1815.            Box1     ULX, ULY, LRX, LRY, BoxFore, BoxBack
  1816.            Box1     5,3,75,20,7,0
  1817.            Box1     5,3,75,20,112
  1818.  
  1819.         The first example draws a box whose upper left coordinates are the
  1820.         contents of the variables ULX and ULY and whose lower left coordinates
  1821.         are the contents of the variables LRX and LRY. The box border will be
  1822.         the contents of BoxFore (red) on a background of BoxBack (black).  The
  1823.         second example draws a box whose upper left coordinates are 5,3 and
  1824.         whose lower right coordinates are 75,20. The box border is drawn in
  1825.         white on black. The third example draws a box with the same
  1826.         coordinates and uses the composite color attribute of 112 (white on
  1827.         black). See ClearBox command.
  1828.  
  1829.  
  1830.  
  1831.  
  1832.  
  1833.  
  1834.  
  1835.  
  1836.  
  1837.  
  1838.  
  1839.  
  1840.  
  1841.                                     Page 34
  1842.  
  1843.  
  1844.  
  1845.  
  1846.  
  1847.                  BOX4 UX, UY, LX, LY, ForeClr [,BackClr] [,ShadowClr]
  1848.  
  1849.         Draw a box (frame) on the screen whose upper left coordinates (X,Y)
  1850.         are UX,UY, and whose lower right coordinates (X,Y) are LX,LY. Draw the
  1851.         box using a line in foreground color ForeClr on background color
  1852.         BackClr. The border line for the box is single line with a transparent
  1853.         shadow. The shadow color is ShadowClr.
  1854.  
  1855.         The interior of the box is cleared to the background color whether
  1856.         specified explicitly by the background color parameter or as a part of
  1857.         the composite color parameter. The cursor is positioned at UX+1, UY+1.
  1858.  
  1859.            Variable ULX,2,5     ;upper left col value
  1860.            Variable ULY,2,3     ;upper left row value
  1861.            Variable LRX,2,75    ;lower right col value
  1862.            Variable LRY,2,20    ;lower right row value
  1863.            Variable BoxFore,2,4 ;foreground color red
  1864.            Variable BoxBack,2,0 ;background color black
  1865.            Variable Shadow,2,8  ;shadow color
  1866.            Box1     ULX,ULY,LRX,LRY,BoxFore,BoxBack,Shadow
  1867.  
  1868.  
  1869.         This example draws a box whose upper left coordinates are the contents
  1870.         of the variables ULX and ULY and whose lower left coordinates are the
  1871.         contents of the variables LRX and LRY. The box border will be the
  1872.         contents of BoxFore (red) on a background of BoxBack (black). The
  1873.         shadow color is the contents of the variable Shadow. See ClearBox
  1874.         command.
  1875.  
  1876.  
  1877.  
  1878.  
  1879.  
  1880.  
  1881.  
  1882.  
  1883.  
  1884.  
  1885.  
  1886.  
  1887.  
  1888.  
  1889.  
  1890.  
  1891.  
  1892.  
  1893.  
  1894.                                     Page 35
  1895.  
  1896.  
  1897.  
  1898.  
  1899.  
  1900.                                        BREAKON
  1901.  
  1902.  
  1903.         Provides a capability to exit from a PowerBatch program by pressing the
  1904.         combination of keys (Ctrl - Break) or (Ctrl - C). The default value
  1905.         set at the beginning of any PowerBatch program is BreakON. To keep a
  1906.         user from exiting a running PowerBatch program, execute the BreakOFF
  1907.         command. If sections of the program are to be protected and other
  1908.         sections not protected, surround the sections with pairs of
  1909.         BreakON...BreakOFF commands. See BreakOff command.
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.  
  1919.  
  1920.  
  1921.  
  1922.  
  1923.  
  1924.  
  1925.  
  1926.  
  1927.  
  1928.  
  1929.  
  1930.  
  1931.  
  1932.  
  1933.  
  1934.  
  1935.  
  1936.  
  1937.  
  1938.  
  1939.  
  1940.  
  1941.  
  1942.  
  1943.  
  1944.  
  1945.  
  1946.  
  1947.                                     Page 36
  1948.  
  1949.  
  1950.  
  1951.  
  1952.  
  1953.                                        BREAKOFF
  1954.  
  1955.         Disables the ability to stop a PowerBatch program by pressing the (Ctrl
  1956.         - Break) or (Ctrl - C) key combinations. The default value set at the
  1957.         beginning of any PowerBatch program is BreakON. See BreakOn command.
  1958.  
  1959.  
  1960.  
  1961.  
  1962.  
  1963.  
  1964.  
  1965.  
  1966.  
  1967.  
  1968.  
  1969.  
  1970.  
  1971.  
  1972.  
  1973.  
  1974.  
  1975.  
  1976.  
  1977.  
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.  
  1985.  
  1986.  
  1987.  
  1988.  
  1989.  
  1990.  
  1991.  
  1992.  
  1993.  
  1994.  
  1995.  
  1996.  
  1997.  
  1998.  
  1999.  
  2000.                                     Page 37
  2001.  
  2002.  
  2003.  
  2004.  
  2005.  
  2006.                              CENTER TextToCenter, LineNum
  2007.  
  2008.         TextToCenter is centered on LineNum. If LineNum is omitted, the
  2009.         current line is assumed. If imbedded color commands are present in
  2010.         TextToCenter, they are processed.
  2011.  
  2012.            Variable InpStr,25,"PowerBatch"
  2013.            Variable MenuLine,19,"@004M@007enu Line 1" 
  2014.            Center   "PowerBatch",2
  2015.            Center   InpStr,2
  2016.            Center   MenuLine,14
  2017.  
  2018.         Both of the first two examples will center the text "PowerBatch" on line
  2019.         2. The third example will center the text "Menu Line 1" on line 14.
  2020.         The value of the variable MenuLine contains imbedded colors commands.
  2021.         Note that the character,"@" is used to signify ASCII 001, a non-
  2022.         printable character. Refer to the notes on imbedded color commands.
  2023.  
  2024.  
  2025.  
  2026.  
  2027.  
  2028.  
  2029.  
  2030.  
  2031.  
  2032.  
  2033.  
  2034.  
  2035.  
  2036.  
  2037.  
  2038.  
  2039.  
  2040.  
  2041.  
  2042.  
  2043.  
  2044.  
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.  
  2051.  
  2052.  
  2053.                                     Page 38
  2054.  
  2055.  
  2056.  
  2057.  
  2058.  
  2059.                                     CHDIR DirName
  2060.  
  2061.         DirName is made to be the current directory. If DirName contains a
  2062.         drive designation (i.e. C:\NEWDIR), a change will be made to the new
  2063.         drive prior to changing to the new directory.
  2064.  
  2065.            Variable Drive,3
  2066.            Variable Directory,79
  2067.            Write 'Enter new drive letter >'
  2068.            ReadKey  Drive
  2069.            Concat   Drive,':\'
  2070.            Write 'Enter new directory >'
  2071.            ReadStr  Directory
  2072.            Concat   Directory,Drive,Directory
  2073.            ChDir Directory
  2074.  
  2075.         The user is asked to enter a new drive and a new directory. These are
  2076.         then concatenated into the variable Directory. If the resulting value
  2077.         in Directory is "C:\NEWDIR", the ChDir command will change the logged
  2078.         (current default) drive to "C" and the logged directory to "\NEWDIR".
  2079.  
  2080.  
  2081.  
  2082.  
  2083.  
  2084.  
  2085.  
  2086.  
  2087.  
  2088.  
  2089.  
  2090.  
  2091.  
  2092.  
  2093.  
  2094.  
  2095.  
  2096.  
  2097.  
  2098.  
  2099.  
  2100.  
  2101.  
  2102.  
  2103.  
  2104.  
  2105.  
  2106.                                     Page 39
  2107.  
  2108.  
  2109.  
  2110.  
  2111.  
  2112.                  CLEAR FGrndClr, [,BGrndClr] [,ClearChar] [BorderClr]
  2113.  
  2114.         The current defined screen will be cleared. This may have been altered
  2115.         with a Window command, if so, only the defined window will be cleared.
  2116.         The screen will be cleared to FGrndClr, BGrndClr. If ClearChar is
  2117.         specified, the screen will be cleared to this character, else it will
  2118.         be cleared to spaces. If the current defined screen is 1,1,80,25; the
  2119.         border will be set to BorderClr. The border may be "cleared" to normal
  2120.         with a clear command with BorderClr set to black.
  2121.  
  2122.            Variable ColorAttr,3,112 ;define wht on black
  2123.            Clear ColorAttr      ;clear to composite color 112
  2124.            Clear 7,0,'░'     ;clear to white on black using               
  2125.            ; the char ░ to create a
  2126.                           ; pattern
  2127.            Clear 4,0,,4      ;clear to red on black with
  2128.                           ; red border, no pattern
  2129.  
  2130.  
  2131.  
  2132.  
  2133.  
  2134.  
  2135.  
  2136.  
  2137.  
  2138.  
  2139.  
  2140.  
  2141.  
  2142.  
  2143.  
  2144.  
  2145.  
  2146.  
  2147.  
  2148.  
  2149.  
  2150.  
  2151.  
  2152.  
  2153.  
  2154.  
  2155.  
  2156.  
  2157.  
  2158.  
  2159.                                     Page 40
  2160.  
  2161.  
  2162.  
  2163.  
  2164.  
  2165.                   CLEARBOX UX,XY,LX,LY, FgClr, [BkgClr] [,ClearChar]
  2166.  
  2167.  
  2168.         Clear the interior of the box whose upper left coordinates (X,Y) are
  2169.         UX,UY and whose lower right coordinates (X,Y) are LX,LY. Clear the
  2170.         interior of the box to foreground color FgClr and background color
  2171.         BkgClr. This command clears the "inside" of the box, not the lines
  2172.         which describe the box. If ClearChar is specified, the interior of the
  2173.         box is propagated with the clear character.
  2174.  
  2175.            Variable ULX,2,5     ;upper left col value
  2176.            Variable ULY,2,3     ;upper left row value
  2177.            Variable LRX,2,75    ;lower right col value
  2178.            Variable LRY,2,20    ;lower right row value
  2179.            Variable BoxFore,2,4 ;foreground color red
  2180.            Variable BoxBack,2,0 ;background color black
  2181.            Box1     ULX, ULY, LRX, LRY, BoxFore, BoxBack
  2182.            ClearBox 5,3,75,20,112
  2183.  
  2184.         In this example we define the upper right and lower left coordinates
  2185.         of the box as well as the colors BoxFore and BoxBack. We draw the box
  2186.         with a red line on a black background. The ClearBox command clears the
  2187.         interior of the box to white on black.
  2188.  
  2189.            ClearBox ULX,ULY,LRX,LRY,BoxFore,BoxBack,'▓'
  2190.  
  2191.         This command clears the box to red on black and completely fills the
  2192.         box with the character "▓".
  2193.  
  2194.  
  2195.  
  2196.  
  2197.  
  2198.  
  2199.  
  2200.  
  2201.  
  2202.  
  2203.  
  2204.  
  2205.  
  2206.  
  2207.  
  2208.  
  2209.  
  2210.  
  2211.  
  2212.                                     Page 41
  2213.  
  2214.  
  2215.  
  2216.  
  2217.  
  2218.                     CLEARLINE LineNum, ForeGrndClr [,BackGrndClr]
  2219.  
  2220.         Clear the line number specified by LineNum to a foreground color of
  2221.         ForeGrndClr and a background color of BackGrndClr. The line number is
  2222.         relative to the top of the current window. If you have defined a
  2223.         window with one of the PowerBatch window commands, the ClearLine command
  2224.         will be relative to the top left of this current window.
  2225.  
  2226.            Variable    Red,1,4
  2227.            Variable    Blue,1,1
  2228.            Variable    RedOnBlue,2,20
  2229.            Variable    CurrLine,2,12
  2230.            ClearLine      12,Red,Blue
  2231.            ClearLine      CurrLine,RedOnBlue
  2232.  
  2233.         Both examples of the ClearLine command clear line 12 on the screen to
  2234.         red foreground color and blue background color.
  2235.  
  2236.            Window1     20,5,60,10,32
  2237.            ClearLine      3,26
  2238.  
  2239.         This command will clear the third line of the defined window (the
  2240.         eighth absolute line on the physical screen), i.e. the third line down
  2241.         from the top of the window.
  2242.  
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248.  
  2249.  
  2250.  
  2251.  
  2252.  
  2253.  
  2254.  
  2255.  
  2256.  
  2257.  
  2258.  
  2259.  
  2260.  
  2261.  
  2262.  
  2263.  
  2264.  
  2265.                                     Page 42
  2266.  
  2267.  
  2268.  
  2269.  
  2270.  
  2271.                          COLOR ForeGroundClr [,BackgroundClr]
  2272.  
  2273.         Set the default system color to a foreground color of ForeGroundClr
  2274.         and to a background color of BackgroundClr or optionally set the
  2275.         system color to the composite color attribute ForeGroundClr.
  2276.  
  2277.            Variable RedOnBlue,2,20
  2278.            Color 4,1
  2279.            Color MenuClr
  2280.  
  2281.         Both examples set the default color to red on blue for any text
  2282.         written to the screen without specific color instructions.
  2283.  
  2284.  
  2285.  
  2286.  
  2287.  
  2288.  
  2289.  
  2290.  
  2291.  
  2292.  
  2293.  
  2294.  
  2295.  
  2296.  
  2297.  
  2298.  
  2299.  
  2300.  
  2301.  
  2302.  
  2303.  
  2304.  
  2305.  
  2306.  
  2307.  
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.  
  2315.  
  2316.  
  2317.  
  2318.                                     Page 43
  2319.  
  2320.  
  2321.  
  2322.  
  2323.  
  2324.                      COMPARE Value1, Value2, 1GR2,  1Less2, 1EQ2
  2325.  
  2326.         Compare the contents of Value1 to the contents of Value2. If Value1 is
  2327.         greater than Value2 jump to the Label 1GR2. If Value1 is less than
  2328.         Value2 jump to the label 1Less2. If Value1 is equal Value2 jump to the
  2329.         label 1EQ2. If the contents of the first two operands (Value1, Value2)
  2330.         are numeric then a numeric compare is performed otherwise an
  2331.         alphabetic compare is made. (If 19 is compared alphabetically to 2,
  2332.         then 2 is greater than 19; if it is compared numerically, 19 is
  2333.         greater than 2.)
  2334.  
  2335.            Variable InChar,1
  2336.            Variable Yes,1,"Y"
  2337.            Variable No,1,"N"
  2338.            GoToXY   4,23
  2339.            ReadYN   "Incorrect entry...Continue [Y/N] ",InChar
  2340.            Compare  InChar,"Y",NoIn,NoIn,YesIn
  2341.            Compare  InChar,Yes,,,YesIn   (Not Y falls through)
  2342.            Compare  InChar,"Y",NoIn,NoIn (Y falls through)
  2343.  
  2344.         In the first example, variable InChar is compared to literal "Y". If
  2345.         InChar is greater than "Y" then the program will jump to the label
  2346.         NoIn; if InChar is less than "Y", the program also jumps to the label
  2347.         NoIn; if InChar is equal to "Y", the program will continue processing
  2348.         at the label named YesIn. In the second compare, the variable InChar
  2349.         is compared to the variable Yes which has an assigned value of "Y". If
  2350.         InChar contains anything but "Y", the program continues with the next
  2351.         instruction after the compare command (it is said to fall through); if
  2352.         InChar contains "Y", the program will jump to the label YesIn. In the
  2353.         third compare command, variable InChar is compared to the literal "Y".
  2354.         If the variable InChar contains "N" (ReadYN prevents any entry but Y
  2355.         or N) the program jumps to the label NoIn otherwise it continues with
  2356.         the instruction after the compare command.
  2357.  
  2358.  
  2359.  
  2360.  
  2361.  
  2362.  
  2363.  
  2364.  
  2365.  
  2366.  
  2367.  
  2368.  
  2369.  
  2370.  
  2371.                                     Page 44
  2372.  
  2373.  
  2374.  
  2375.  
  2376.  
  2377.                           CONCAT Target, String1 [,String2]
  2378.  
  2379.         If String2 is omitted, String1 is appended to Target. If String2 is
  2380.         present, String2 is appended to String1 and the result replaces
  2381.         Target.
  2382.  
  2383.            Variable    OutMsg,78
  2384.            Variable    ErrMsg," is not a valid Drive letter."
  2385.            Variable    DriveLtr,1
  2386.            WriteAt     6,17,"Enter your source drive letter "
  2387.            ReadUpKey      DriveLtr
  2388.            ?DriveExist DriveLtr,DriveOK
  2389.            Concat      OutMsg, "[19] ", DriveLtr
  2390.            Concat      OutMsg, " is not a valid Drive letter."
  2391.            WriteAt     5,23,OutMsg
  2392.  
  2393.         In this example we ask the user to input a valid drive letter and
  2394.         verify this drive with the ?DriveExist command. If the drive is not
  2395.         valid we concatenate "[19]" (the error number) plus the drive letter
  2396.         entered by the user into the variable OutMsg. We then concatenate the
  2397.         error message (" is not a valid Drive letter.") onto the contents of
  2398.         OutMsg. The result would be something like "[19] L is not a valid
  2399.         Drive letter."
  2400.  
  2401.  
  2402.  
  2403.  
  2404.  
  2405.  
  2406.  
  2407.  
  2408.  
  2409.  
  2410.  
  2411.  
  2412.  
  2413.  
  2414.  
  2415.  
  2416.  
  2417.  
  2418.  
  2419.  
  2420.  
  2421.  
  2422.  
  2423.  
  2424.                                     Page 45
  2425.  
  2426.  
  2427.  
  2428.  
  2429.  
  2430.                                   CURSOR CursorType
  2431.  
  2432.         CursorType may be 1,2, 3 or 4. 1 = normal cursor; 2 = cursor off; 3 =
  2433.         fat cursor; 4 = block cursor. A "fat" cursor is the cursor shape
  2434.         normally seen when text is to be inserted. The block cursor fills the
  2435.         entire screen position. Remember to set the cursor back to normal at
  2436.         the end of a program if you have set the cursor off during the
  2437.         processing of your program. This is not automatically set back to
  2438.         normal when the program terminates.
  2439.  
  2440.            Variable Normal,1,1
  2441.            Variable Off,1,2
  2442.            Variable Fat,1,3
  2443.            Variable Block,1,4
  2444.  
  2445.            Cursor   Off
  2446.            Cursor   2
  2447.            Cursor   Fat,1
  2448.            Cursor   3
  2449.            Cursor   Block
  2450.            Cursor   4
  2451.            Cursor   Normal
  2452.            Cursor   1
  2453.  
  2454.         Each preceding pair of commands will have the same results. Off has a
  2455.         value of 2, Fat has a value of 3, etc.
  2456.  
  2457.  
  2458.  
  2459.  
  2460.  
  2461.  
  2462.  
  2463.  
  2464.  
  2465.  
  2466.  
  2467.  
  2468.  
  2469.  
  2470.  
  2471.  
  2472.  
  2473.  
  2474.  
  2475.  
  2476.  
  2477.                                     Page 46
  2478.  
  2479.  
  2480.  
  2481.  
  2482.  
  2483.                     DIVIDE Result, Divisor [,RtnCode] [,Decimals]
  2484.  
  2485.         If the divisor is less than 1 then Result is set to zero. Result is
  2486.         divided by Divisor and the result  of the division is placed in
  2487.         Result. If the division operation contained no errors, RtnCode will
  2488.         contain zero (0). The number of decimal places in the Result is
  2489.         specified in Decimals. If Decimals is not specified, zero decimal
  2490.         places will be assumed and integer arithmatic will be performed. Your
  2491.         result will be rounded to the number of specified decimal places.
  2492.         Accurate to 18 significant digits.
  2493.  
  2494.            Variable Result,18
  2495.            Variable RtnCode,1
  2496.  
  2497.            SetVar   Result,15
  2498.            Divide   Result,3    (Result now contains 5)
  2499.  
  2500.            SetVar   Result,'.000124'
  2501.            Divide   Result,'.00515',RtnCode,10
  2502.                     (Result contains 0.0240776699)
  2503.  
  2504.  
  2505.  
  2506.  
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512.  
  2513.  
  2514.  
  2515.  
  2516.  
  2517.  
  2518.  
  2519.  
  2520.  
  2521.  
  2522.  
  2523.  
  2524.  
  2525.  
  2526.  
  2527.  
  2528.  
  2529.  
  2530.                                     Page 47
  2531.  
  2532.  
  2533.  
  2534.  
  2535.  
  2536.                                  ENHANCLR Mode
  2537.  
  2538.         The enhanced color command assigns new background colors to the color
  2539.         values above 127 (the blinking colors). The new colors have a
  2540.         background color which is identical to the foreground colors. Run the
  2541.         new COLORS utility to view the new color values.  Mode is either 0
  2542.         (off); or 1 (on). Enhanced colors may be switched on or off at any
  2543.         time and the current screen will be changed.
  2544.  
  2545.            Variable    On,1,1
  2546.            Variable    Off,1,0
  2547.  
  2548.  
  2549.            EnhanClr    On
  2550.  
  2551.  
  2552.  
  2553.  
  2554.  
  2555.  
  2556.  
  2557.  
  2558.  
  2559.  
  2560.  
  2561.  
  2562.  
  2563.  
  2564.  
  2565.  
  2566.  
  2567.  
  2568.  
  2569.  
  2570.  
  2571.  
  2572.  
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578.  
  2579.  
  2580.  
  2581.  
  2582.  
  2583.                                     Page 48
  2584.  
  2585.  
  2586.  
  2587.  
  2588.  
  2589.                                        FLUSHKEY
  2590.  
  2591.         Removes all characters from the system keyboard buffer. After
  2592.         execution of this command, there will be no more characters waiting to
  2593.         be retrieved from the keyboard buffer. Use this command to eliminate
  2594.         the possibility of any "type ahead" characters being present in the
  2595.         buffer when you ask for input from the user.
  2596.  
  2597.            WriteLine   'CAUTION, You will now format your hard disk'
  2598.            FlushKey
  2599.            ReadYN   'Format hard Disk (Y/N)? ',InputChar
  2600.  
  2601.  
  2602.  
  2603.  
  2604.  
  2605.  
  2606.  
  2607.  
  2608.  
  2609.  
  2610.  
  2611.  
  2612.  
  2613.  
  2614.  
  2615.  
  2616.  
  2617.  
  2618.  
  2619.  
  2620.  
  2621.  
  2622.  
  2623.  
  2624.  
  2625.  
  2626.  
  2627.  
  2628.  
  2629.  
  2630.  
  2631.  
  2632.  
  2633.  
  2634.  
  2635.                                     Page 49
  2636.  
  2637.  
  2638.  
  2639.  
  2640.  
  2641.                                      GOTO Label1
  2642.  
  2643.         Jump to the statement identified as command label Label1. Program
  2644.         processing will go directly from this GoTo command to Label1 and
  2645.         continue with the command immediately following the label (since the
  2646.         label command is simply a placemarker).
  2647.  
  2648.            GoTo     Error
  2649.            GoTo  EndOfPgm
  2650.  
  2651.  
  2652.  
  2653.  
  2654.  
  2655.  
  2656.  
  2657.  
  2658.  
  2659.  
  2660.  
  2661.  
  2662.  
  2663.  
  2664.  
  2665.  
  2666.  
  2667.  
  2668.  
  2669.  
  2670.  
  2671.  
  2672.  
  2673.  
  2674.  
  2675.  
  2676.  
  2677.  
  2678.  
  2679.  
  2680.  
  2681.  
  2682.  
  2683.  
  2684.  
  2685.  
  2686.  
  2687.  
  2688.                                     Page 50
  2689.  
  2690.  
  2691.  
  2692.  
  2693.  
  2694.                                GOTOXY XCo-ord, YCo-ord
  2695.  
  2696.         Move the cursor to the column (X) specified in XCo-ord and row (Y)
  2697.         specified in YCo-ord.
  2698.  
  2699.            Variable CurrX,2
  2700.            Variable CurrY,2
  2701.            GoToXY   CurrX, CurrY
  2702.            GoToXY   12,6
  2703.  
  2704.         In the first example the cursor is moved to the location specified by
  2705.         the contents of variable CurrX and CurrY. In the second example, the
  2706.         cursor is moved to the location specified by two literals "12" and
  2707.         "6".
  2708.  
  2709.  
  2710.  
  2711.  
  2712.  
  2713.  
  2714.  
  2715.  
  2716.  
  2717.  
  2718.  
  2719.  
  2720.  
  2721.  
  2722.  
  2723.  
  2724.  
  2725.  
  2726.  
  2727.  
  2728.  
  2729.  
  2730.  
  2731.  
  2732.  
  2733.  
  2734.  
  2735.  
  2736.  
  2737.  
  2738.  
  2739.  
  2740.  
  2741.                                     Page 51
  2742.  
  2743.  
  2744.  
  2745.  
  2746.  
  2747.                                   HALT [ErrorLevel]
  2748.  
  2749.         Halt your PowerBatch program and set DOS errorlevel to ErrorLevel.
  2750.  
  2751.            Variable Error14,2,14   ;define Error14 as "14"
  2752.            Halt     99
  2753.            Halt     Error14
  2754.  
  2755.         In the first usage of the Halt command, the PowerBatch program is halted
  2756.         and the DOS errorlevel is set to 99. In the second usage the program
  2757.         is halted and the DOS errorlevel is set to the contents of variable
  2758.         Error14 ("14").
  2759.  
  2760.  
  2761.  
  2762.  
  2763.  
  2764.  
  2765.  
  2766.  
  2767.  
  2768.  
  2769.  
  2770.  
  2771.  
  2772.  
  2773.  
  2774.  
  2775.  
  2776.  
  2777.  
  2778.  
  2779.  
  2780.  
  2781.  
  2782.  
  2783.  
  2784.  
  2785.  
  2786.  
  2787.  
  2788.  
  2789.  
  2790.  
  2791.  
  2792.  
  2793.  
  2794.                                     Page 52
  2795.  
  2796.  
  2797.  
  2798.  
  2799.  
  2800.                                    LABEL LabelName
  2801.  
  2802.         Define a location in your source that will enable execution to begin
  2803.         immediately following the Label command without necessarily having
  2804.         executed the command immediately prior to the label. Jump immediately
  2805.         to this location in the command stream. See the discussion on labels
  2806.         at the beginning of this section.
  2807.  
  2808.            Label    MatchErr
  2809.            Label    EndOfPgm
  2810.  
  2811.  
  2812.  
  2813.  
  2814.  
  2815.  
  2816.  
  2817.  
  2818.  
  2819.  
  2820.  
  2821.  
  2822.  
  2823.  
  2824.  
  2825.  
  2826.  
  2827.  
  2828.  
  2829.  
  2830.  
  2831.  
  2832.  
  2833.  
  2834.  
  2835.  
  2836.  
  2837.  
  2838.  
  2839.  
  2840.  
  2841.  
  2842.  
  2843.  
  2844.  
  2845.  
  2846.  
  2847.                                     Page 53
  2848.  
  2849.  
  2850.  
  2851.  
  2852.  
  2853.            LOCSTR  StrToLookFor, StrToLookIn, [Occur] ,Loc [,Replace]
  2854.  
  2855.         Examine the string StrToLookIn for the string StrToLookFor. If Occur
  2856.         does not exist set Occur to 1. Look for the Occur occurrance of the
  2857.         string. If StrToLookFor is found, place the location of the first
  2858.         position of the string in Loc; if StrToLookFor is not found, place
  2859.         zero (0) in Loc. If Replace is present, replace StrToLookFor with
  2860.         Replace.
  2861.  
  2862.            Variable    StrLoc,3
  2863.            Variable    InPutStr,255,'This is a test string'
  2864.            LocStr      'is',InPutStr,,StrLoc
  2865.         StrLoc will contain 3 ("This" contains 'is'),
  2866.  
  2867.            LocStr      'is',InPutStr,2,StrLoc
  2868.         StrLoc will contain 6.
  2869.  
  2870.            LocStr      'test',InPutStr,,StrLoc,'text'
  2871.         StrLoc will contain 11 and InPutStr will be changed to "This is a text
  2872.         string".
  2873.  
  2874.            LocStr      'test',InPutStr,2,StrLoc,'text'
  2875.         StrLoc will contain 0 and InPutStr will not be changed. There is no
  2876.         second occurrance of "test".
  2877.  
  2878.  
  2879.  
  2880.  
  2881.  
  2882.  
  2883.  
  2884.  
  2885.  
  2886.  
  2887.  
  2888.  
  2889.  
  2890.  
  2891.  
  2892.  
  2893.  
  2894.  
  2895.  
  2896.  
  2897.  
  2898.  
  2899.  
  2900.                                     Page 54
  2901.  
  2902.  
  2903.  
  2904.  
  2905.  
  2906.                              LENGTH StringLength, String
  2907.  
  2908.         Calculate the length of the string in variable String and place the
  2909.         result in StringLength.
  2910.  
  2911.            Variable InString
  2912.            Variable StrLen
  2913.  
  2914.            WriteAt  12,14,"Enter your current directory "
  2915.            ReadStr  InString
  2916.  
  2917.         User enters c:\util.
  2918.  
  2919.            Length   StrLen, InString
  2920.  
  2921.         StrLen will contain 7, the length of "c:\util".
  2922.  
  2923.  
  2924.  
  2925.  
  2926.  
  2927.  
  2928.  
  2929.  
  2930.  
  2931.  
  2932.  
  2933.  
  2934.  
  2935.  
  2936.  
  2937.  
  2938.  
  2939.  
  2940.  
  2941.  
  2942.  
  2943.  
  2944.  
  2945.  
  2946.  
  2947.  
  2948.  
  2949.  
  2950.  
  2951.  
  2952.  
  2953.                                     Page 55
  2954.  
  2955.  
  2956.  
  2957.  
  2958.  
  2959.                                      LOWER String
  2960.  
  2961.         Change the alphabetic characters in the variable String to lower case.
  2962.  
  2963.            Variable InString,25
  2964.            ReadStr  InString
  2965.  
  2966.         User enters C:\UTIL.
  2967.  
  2968.            Lower InString
  2969.  
  2970.         Now contains c:\util.
  2971.  
  2972.  
  2973.  
  2974.  
  2975.  
  2976.  
  2977.  
  2978.  
  2979.  
  2980.  
  2981.  
  2982.  
  2983.  
  2984.  
  2985.  
  2986.  
  2987.  
  2988.  
  2989.  
  2990.  
  2991.  
  2992.  
  2993.  
  2994.  
  2995.  
  2996.  
  2997.  
  2998.  
  2999.  
  3000.  
  3001.  
  3002.  
  3003.  
  3004.  
  3005.  
  3006.                                     Page 56
  3007.  
  3008.  
  3009.  
  3010.  
  3011.  
  3012.                     MIDSTRING NewString, OldString, Offset, Length
  3013.  
  3014.         Create a NewString by extracting characters from OldString. Beginning
  3015.         with the Offset character of OldString, extract Length characters and
  3016.         create the new string.
  3017.  
  3018.            Variable Path,79
  3019.            WriteAt  1,2,"Enter Drive and Directory name "
  3020.            ReadStr  Path
  3021.  
  3022.         User enters C:\UTIL.
  3023.  
  3024.            MidString   Drive,Path,1,2
  3025.  
  3026.         Extract C: from C:\UTIL, making the newstring C:.
  3027.  
  3028.  
  3029.  
  3030.  
  3031.  
  3032.  
  3033.  
  3034.  
  3035.  
  3036.  
  3037.  
  3038.  
  3039.  
  3040.  
  3041.  
  3042.  
  3043.  
  3044.  
  3045.  
  3046.  
  3047.  
  3048.  
  3049.  
  3050.  
  3051.  
  3052.  
  3053.  
  3054.  
  3055.  
  3056.  
  3057.  
  3058.  
  3059.                                     Page 57
  3060.  
  3061.  
  3062.  
  3063.  
  3064.  
  3065.                     MULTIPLY Result, Number [,RtnCode] [,Decimals]
  3066.  
  3067.         Result is multiplied by Number and the result of the multiplication is
  3068.         placed in Result. If the Multiply operation completed without error,
  3069.         RtnCode will contain zero (0). The number of decimal places in the
  3070.         result is specified in Decimals. If Decimals is not specified, zero
  3071.         decimal places will be assumed and integer arithmatic will be
  3072.         performed. Your Result will be rounded to the number of decimal places
  3073.         specified.
  3074.  
  3075.            Variable Total,14
  3076.            Variable TaxRate,6,'.06875'
  3077.            Variable Tax,8
  3078.            Variable Units,4
  3079.            Variable Quantity,3
  3080.  
  3081.            SetVar   Total,Units          (124)
  3082.            Multiply Total,Quantity          (372)
  3083.            Write 'Your total quantity is '
  3084.            WriteLine   Total
  3085.            Multiply Total,Cost,RtnCode,2    (948.6)
  3086.            SetVar   Tax,Total               (948.6)
  3087.            Multiply Tax,TaxRate,RtnCode,2      (65.22)
  3088.  
  3089.  
  3090.  
  3091.  
  3092.  
  3093.  
  3094.  
  3095.  
  3096.  
  3097.  
  3098.  
  3099.  
  3100.  
  3101.  
  3102.  
  3103.  
  3104.  
  3105.  
  3106.  
  3107.  
  3108.  
  3109.  
  3110.  
  3111.  
  3112.                                     Page 58
  3113.  
  3114.  
  3115.  
  3116.  
  3117.  
  3118.                                         NORMAL
  3119.  
  3120.         Change the current color attribute(s) back to the definition prior to
  3121.         the execution of a BLINK or REVERSE command.
  3122.  
  3123.            Color 20    ;set default color to red on blue
  3124.            Blink       ;changes to blinking red on blue
  3125.            WriteAt  2,24,"Incorrect...re-enter!"
  3126.            Normal         ;resets color to 20
  3127.            Beep     800,8
  3128.            Wait     35    ;pause 3.5 seconds
  3129.            WriteAt  2,24,"                    "   ;clear msg
  3130.  
  3131.         This is an example of a typical error routine. The color attribute is
  3132.         changed to blinking with the Blink command. The error message is
  3133.         written and the color attribute is changed back to its original value
  3134.         with the Normal command. The speaker is "beeped" and after a wait of
  3135.         3.5 seconds, the error message is removed from the screen.
  3136.  
  3137.  
  3138.  
  3139.  
  3140.  
  3141.  
  3142.  
  3143.  
  3144.  
  3145.  
  3146.  
  3147.  
  3148.  
  3149.  
  3150.  
  3151.  
  3152.  
  3153.  
  3154.  
  3155.  
  3156.  
  3157.  
  3158.  
  3159.  
  3160.  
  3161.  
  3162.  
  3163.  
  3164.  
  3165.                                     Page 59
  3166.  
  3167.  
  3168.  
  3169.  
  3170.  
  3171.                     PRINT PrinterNumber, StringToPrint [,RtnCode]
  3172.  
  3173.  
  3174.         PrinterNumber is 1,2, or 3; this corresponds to LPT1, LPT2, and LPT3.
  3175.         The Print command will send the StringToPrint to the printer and WILL
  3176.         NOT append a carriage return/line feed. This allows you to build your
  3177.         print line with a series of Print statements and complete the line
  3178.         with a PrintLine statement to force a CR/LF. While RtnCode is not
  3179.         required, it is highly recommended. If RtnCode contains zero (0), your
  3180.         print operation was successful. If it is not zero, your print
  3181.         operation was not successful. The error code returned varies with the
  3182.         make of printer, but the following seem to be somewhat universal.
  3183.  
  3184.         RtnCode = 8.   Printer not in ready state (printer off line).
  3185.         RtnCode = 40.  Printer out of paper.
  3186.         RtnCode = 48.  Printer not connected or power not on.
  3187.  
  3188.            Variable    PrtLine,80
  3189.            Variable    RtnCode,3
  3190.            Variable    PrtError,,'Printer Error!!Check your printer'
  3191.  
  3192.            SetVar      PrtLine,''
  3193.            Print    1,PrtLine,RtnCode
  3194.            Compare     RtnCode,0,,,PrtReady
  3195.            Write    PrtError
  3196.            ReadKey     InKey
  3197.            Label PrtReady
  3198.            SetVar      PrtLine,InData
  3199.            Print    1,PrtLine,RtnCode
  3200.            Compare     RtnCode,0,,,NextLine
  3201.  
  3202.  
  3203.  
  3204.  
  3205.  
  3206.  
  3207.  
  3208.  
  3209.  
  3210.  
  3211.  
  3212.  
  3213.  
  3214.  
  3215.  
  3216.  
  3217.  
  3218.                                          Page 60
  3219.  
  3220.  
  3221.  
  3222.  
  3223.  
  3224.                   PRINTLINE PrinterNumber, StringToPrint [,RtnCode]
  3225.  
  3226.         PrinterNumber is 1,2, or 3; this corresponds to LPT1, LPT2, and LPT3.
  3227.         The PrintLine command will send the StringToPrint to the printer and
  3228.         WILL append a carriage return/line feed. While RtnCode is not
  3229.         required, it is highly recommended. If RtnCode contains zero (0), your
  3230.         print operation was successful. If it is not zero, your print
  3231.         operation was not successful. The error code returned varies with the
  3232.         make of printer, but the following seem to be somewhat universal.
  3233.  
  3234.         RtnCode = 8.   Printer not in ready state (printer off line).
  3235.         RtnCode = 40.  Printer out of paper.
  3236.         RtnCode = 48.  Printer not connected or power not on.
  3237.  
  3238.            Variable    PrtLine,80
  3239.            Variable    RtnCode,3
  3240.            Variable    PrtError,,'Printer Error!!Check your printer'
  3241.  
  3242.            SetVar      PrtLine,''
  3243.            Print    1,PrtLine,RtnCode    ;is the printer rdy?
  3244.            Compare     RtnCode,0,,,PrtReady
  3245.            Write    PrtError
  3246.            ReadKey     InKey
  3247.            Label PrtReady
  3248.            SetVar      PrtLine,InData
  3249.            PrintLine      1,PrtLine,RtnCode
  3250.            Compare     RtnCode,0,,,NextLine
  3251.  
  3252.  
  3253.  
  3254.  
  3255.  
  3256.  
  3257.  
  3258.  
  3259.  
  3260.  
  3261.  
  3262.  
  3263.  
  3264.  
  3265.  
  3266.  
  3267.  
  3268.  
  3269.  
  3270.  
  3271.                                     Page 61
  3272.  
  3273.  
  3274.  
  3275.  
  3276.  
  3277.                                        PRINTSCR
  3278.  
  3279.         The entire contents of the current screen is sent to the system
  3280.         printer. A page eject is automatically appended to the last character
  3281.         to cause the printer to eject the printed page.
  3282.  
  3283.  
  3284.  
  3285.  
  3286.  
  3287.  
  3288.  
  3289.  
  3290.  
  3291.  
  3292.  
  3293.  
  3294.  
  3295.  
  3296.  
  3297.  
  3298.  
  3299.  
  3300.  
  3301.  
  3302.  
  3303.  
  3304.  
  3305.  
  3306.  
  3307.  
  3308.  
  3309.  
  3310.  
  3311.  
  3312.  
  3313.  
  3314.  
  3315.  
  3316.  
  3317.  
  3318.  
  3319.  
  3320.  
  3321.  
  3322.  
  3323.  
  3324.                                     Page 62
  3325.  
  3326.  
  3327.  
  3328.  
  3329.  
  3330.                                  PROMPT NewPromptVal
  3331.  
  3332.         Change the current value of the prompt to the value specified in
  3333.         NewPromptVal.
  3334.  
  3335.            Prompt   "$P$G"
  3336.  
  3337.  
  3338.  
  3339.  
  3340.  
  3341.  
  3342.  
  3343.  
  3344.  
  3345.  
  3346.  
  3347.  
  3348.  
  3349.  
  3350.  
  3351.  
  3352.  
  3353.  
  3354.  
  3355.  
  3356.  
  3357.  
  3358.  
  3359.  
  3360.  
  3361.  
  3362.  
  3363.  
  3364.  
  3365.  
  3366.  
  3367.  
  3368.  
  3369.  
  3370.  
  3371.  
  3372.  
  3373.  
  3374.  
  3375.  
  3376.  
  3377.                                     Page 63
  3378.  
  3379.  
  3380.  
  3381.  
  3382.  
  3383.                               RANDOM UpperLimit, Result
  3384.  
  3385.         A random number is generated from (and including) zero through the
  3386.         UpperLimit. The random number is placed in Result.
  3387.  
  3388.            Variable RandNum,3
  3389.  
  3390.            Random   200,RandNum
  3391.  
  3392.         A random number between 0 and 200 inclusive will be generated.
  3393.  
  3394.            Label NewNumb
  3395.            Random   200,RandNum
  3396.            Compare  RandNum,100,,NewNumb
  3397.  
  3398.         This will generate a random number between 100 and 200.
  3399.  
  3400.  
  3401.  
  3402.  
  3403.  
  3404.  
  3405.  
  3406.  
  3407.  
  3408.  
  3409.  
  3410.  
  3411.  
  3412.  
  3413.  
  3414.  
  3415.  
  3416.  
  3417.  
  3418.  
  3419.  
  3420.  
  3421.  
  3422.  
  3423.  
  3424.  
  3425.  
  3426.  
  3427.  
  3428.  
  3429.  
  3430.                                     Page 64
  3431.  
  3432.  
  3433.  
  3434.  
  3435.  
  3436.                READKEY Target [,SpecInd] [,Tmeout] [,NoPrt] [,CtlChar]
  3437.  
  3438.         Read a single key from the keyboard and place the result in Target. If
  3439.         SpecInd contains a "1" after reading the key from the keyboard, then a
  3440.         "special key" has been returned in Target. Special keys are function
  3441.         keys, Page Up/Down, cursor movement keys, etc. If you are in doubt
  3442.         about a particular key, run the program "KEYID" (furnished on the
  3443.         install disk). Each key you press will be identified as either a
  3444.         regular key or a special key and the value that will be returned in
  3445.         Target when this key is pressed (remember that SpecInd will contain a
  3446.         "1" for special keys).
  3447.  
  3448.          The TmeOut parameter is used when you want to wait for a key from the
  3449.         keyboard, but continue processing without receiving the key after a
  3450.         specified number of seconds. Placing the number of seconds to wait in
  3451.         TmeOut will allow your program to "fall through" the ReadKey
  3452.         instruction if the timeout value is exceeded. If no input is received
  3453.         within TmeOut seconds, the null character (ASCII 0) is placed in
  3454.         Target and zero is placed in SpecInd.
  3455.  
  3456.         The NoPrt parameter gives you the option to have the entered character
  3457.         printed or not. The default is to print the character. If you wish to
  3458.         have the character not printed to the screen, place a one (1) in the
  3459.         NoPrt parameter.
  3460.  
  3461.         ReadKey gives you the capability to check for Non-ASCII keys (i.e.
  3462.         NumLock, Scroll Lock, etc.). Place one of the characters from the
  3463.         following table in the CtlChar parameter. If the requested key is
  3464.         pressed on the keyboard (or toggled on in the case of NumLock, Scroll
  3465.         Lock, and Caps Lock), ReadKey will return with SpecInd set to 2. No
  3466.         key will be returned in Target. Select one of these values to be
  3467.         placed in CtlChar:
  3468.            Right Shift #1    Left Shift     #2
  3469.            Ctrl        #4    Alt         #8
  3470.            Scroll Lock #16      Num Lock #32
  3471.            Caps Lock   #64      Insert      #128
  3472.  
  3473.  
  3474.  
  3475.  
  3476.  
  3477.  
  3478.  
  3479.  
  3480.  
  3481.  
  3482.  
  3483.                                     Page 65
  3484.  
  3485.  
  3486.  
  3487.  
  3488.  
  3489.                            Variable InKey,1
  3490.            Variable Spec,1
  3491.            Variable F10,1,#68
  3492.            Variable Caps,1,#64
  3493.  
  3494.            ReadKey  InKey          ;read a single key
  3495.  
  3496.            ReadKey  InKey,Spec
  3497.            Compare  Spec,1,Reg,Reg       ;fall thru if Spec=1
  3498.            Compare  InKey,F10,NotF10,NotF10 ;fall thru if F10
  3499.  
  3500.            ReadKey  InKey,Spec,10        ;wait 10 secs 
  3501.            Compare  InKey,'',,,NoKey     ;InKey=null, timedout
  3502.  
  3503.            ReadKey  InKey,,,1            ;dont print the input
  3504.  
  3505.            ReadKey  InKey,Spec,,,Caps
  3506.            Compare  Spec,2,,,CapsOn      ;Spec=2, caps lock on
  3507.            Write 'Caps Lock is off'
  3508.  
  3509.  
  3510.  
  3511.  
  3512.  
  3513.  
  3514.  
  3515.  
  3516.  
  3517.  
  3518.  
  3519.  
  3520.  
  3521.  
  3522.  
  3523.  
  3524.  
  3525.  
  3526.  
  3527.  
  3528.  
  3529.  
  3530.  
  3531.  
  3532.  
  3533.  
  3534.  
  3535.  
  3536.                                     Page 66
  3537.  
  3538.  
  3539.  
  3540.  
  3541.  
  3542.                               READSTR Target [,TimeOut]
  3543.  
  3544.         Read a string of characters from the keyboard until the user presses
  3545.         the enter key. Any number of characters may be read up to the maximum
  3546.         length specified for Target in the Variable statement. If the TimeOut
  3547.         parameter is specified, wait the specified number of seconds before
  3548.         continuing without having received a key.
  3549.  
  3550.            Variable InString,12
  3551.            ReadStr  InString    ;12 chars max will be read
  3552.  
  3553.            Label ReadPass
  3554.            ReadStr  InString,10 ;Only wait 10 secs for input
  3555.            Compare  InString,'',InputOK
  3556.            WriteAt  12,24,'Please enter your password'
  3557.            GoTo     ReadPass
  3558.  
  3559.            Label InputOK
  3560.  
  3561.  
  3562.  
  3563.  
  3564.  
  3565.  
  3566.  
  3567.  
  3568.  
  3569.  
  3570.  
  3571.  
  3572.  
  3573.  
  3574.  
  3575.  
  3576.  
  3577.  
  3578.  
  3579.  
  3580.  
  3581.  
  3582.  
  3583.  
  3584.  
  3585.  
  3586.  
  3587.  
  3588.  
  3589.                                     Page 67
  3590.  
  3591.  
  3592.  
  3593.  
  3594.  
  3595.                              READUPKEY Target [,TimeOut]
  3596.  
  3597.         Read a single character from the keyboard, changing the case of any
  3598.         alphabetic character to upper case and place this upper case character
  3599.         in Target. If the TimeOut parameter is present, continue with the
  3600.         execution of the program after TimeOut seconds even if no character is
  3601.         entered.
  3602.  
  3603.            ReadUpKey   CharIn   ;read a single char in upper case
  3604.  
  3605.            WriteAt  16,24,'Enter your drive letter'
  3606.            ReadUpKey   CharIn,10      ;wait 10 seconds for a key
  3607.            Compare  CharIn,'',GotDrive,GotDrive
  3608.            SetVar   CharIn,'C'  ;supply default drive letter
  3609.  
  3610.            Label GotDrive
  3611.  
  3612.  
  3613.  
  3614.  
  3615.  
  3616.  
  3617.  
  3618.  
  3619.  
  3620.  
  3621.  
  3622.  
  3623.  
  3624.  
  3625.  
  3626.  
  3627.  
  3628.  
  3629.  
  3630.  
  3631.  
  3632.  
  3633.  
  3634.  
  3635.  
  3636.  
  3637.  
  3638.  
  3639.  
  3640.  
  3641.  
  3642.                                     Page 68
  3643.  
  3644.  
  3645.  
  3646.  
  3647.  
  3648.                      READYN Message, Target [,TimeOut][,NoPrint]
  3649.  
  3650.         Write the message found in Message at the current cursor location and
  3651.         wait for a single key to be entered from the keyboard. Force the user
  3652.         to enter either a "Y" or "N" and place the upper case "Y" or "N" in
  3653.         Target. If TimeOut is specified, wait only the specified number of
  3654.         seconds before continuing with the program without input. If the
  3655.         character entered is not to be printed, place a one (1) in NoPrint.
  3656.  
  3657.            Variable Msg4,35,"Invalid name...Continue [Y/N] "
  3658.            ReadYN   "Invalid name...Continue [Y/N] ",CharIn
  3659.  
  3660.            ReadYN   Msg4,CharIn
  3661.  
  3662.         In both usages of the ReadYN command, the message "Invalid
  3663.         filename...Continue [Y/N] " will be displayed and the program will
  3664.         wait for a response from the user. If the user enters any characters
  3665.         other than "Y", "y", "N", or "n" the system speaker will sound and the
  3666.         user is prompted again for input. At the completion of this command,
  3667.         the variable CharIn will contain either "Y" or "N" (always upper
  3668.         case).
  3669.  
  3670.            Label ErrMsg
  3671.            ReadYN   Msg4,CharIn,8
  3672.            Compare  CharIn,'',GotChar
  3673.            Beep     800,8
  3674.            GoTo     ErrMsg
  3675.  
  3676.         If the user does not enter a character within 8 seconds, the system
  3677.         speaker will be sounded and the user asked again for input.
  3678.  
  3679.  
  3680.  
  3681.  
  3682.  
  3683.  
  3684.  
  3685.  
  3686.  
  3687.  
  3688.  
  3689.  
  3690.  
  3691.  
  3692.  
  3693.  
  3694.  
  3695.                                     Page 69
  3696.  
  3697.  
  3698.  
  3699.  
  3700.  
  3701.                                        REVERSE
  3702.  
  3703.         Change the text attributes to "reverse video". This is accomplished by
  3704.         swapping the foreground and background attributes. This command is
  3705.         "undone" by using NORMAL.
  3706.  
  3707.            Color 20    ;red on black
  3708.            Reverse        ;color is changed to black on red
  3709.            WriteAt  1,15,"Press Escape To Continue"
  3710.            Normal         ;color is now red on black
  3711.  
  3712.  
  3713.  
  3714.  
  3715.  
  3716.  
  3717.  
  3718.  
  3719.  
  3720.  
  3721.  
  3722.  
  3723.  
  3724.  
  3725.  
  3726.  
  3727.  
  3728.  
  3729.  
  3730.  
  3731.  
  3732.  
  3733.  
  3734.  
  3735.  
  3736.  
  3737.  
  3738.  
  3739.  
  3740.  
  3741.  
  3742.  
  3743.  
  3744.  
  3745.  
  3746.  
  3747.  
  3748.                                     Page 70
  3749.  
  3750.  
  3751.  
  3752.  
  3753.  
  3754.                                      SCRMODE Mode
  3755.  
  3756.         Used for changing the screen mode to 43/50 lines per screen on
  3757.         monitors that have the capability to display in these modes. The mode
  3758.         shift will automatically detect either 43 or 50 lines and change to
  3759.         the proper mode. Mode 0 will switch from 43/50 to 25 lines per screen.
  3760.         Mode 1 will switch from 25 lines to 43/50 lines per screen.
  3761.  
  3762.            Variable 25Lines,1,0 ;define a var with value 0
  3763.            Variable 43Lines,1,1 ;define a var with value 1
  3764.  
  3765.            Mode     43Lines
  3766.            Perform  DisplayParms   ;display a file 
  3767.            Mode     25Lines     ;return to normal screen display
  3768.  
  3769.  
  3770.  
  3771.  
  3772.  
  3773.  
  3774.  
  3775.  
  3776.  
  3777.  
  3778.  
  3779.  
  3780.  
  3781.  
  3782.  
  3783.  
  3784.  
  3785.  
  3786.  
  3787.  
  3788.  
  3789.  
  3790.  
  3791.  
  3792.  
  3793.  
  3794.  
  3795.  
  3796.  
  3797.  
  3798.  
  3799.  
  3800.  
  3801.                                     Page 71
  3802.  
  3803.  
  3804.  
  3805.  
  3806.  
  3807.                            SETENV EnvironName EnvironValue
  3808.  
  3809.         The environment variable named EnvironName will have its value changed
  3810.         to EnvironValue. Error messages will occur if the size of the new
  3811.         value minus the size of the old value is greater than the number of
  3812.         free bytes of environment space available.
  3813.  
  3814.            Variable    VarName,7,"MONITOR"
  3815.            Variable VarValue,5,"color"
  3816.  
  3817.            SetEnv   VarName, VarValue
  3818.            SetEnv   "Monitor","color"
  3819.  
  3820.         Both examples will change the environment variable "Monitor" to have a
  3821.         value of "color".
  3822.  
  3823.  
  3824.  
  3825.  
  3826.  
  3827.  
  3828.  
  3829.  
  3830.  
  3831.  
  3832.  
  3833.  
  3834.  
  3835.  
  3836.  
  3837.  
  3838.  
  3839.  
  3840.  
  3841.  
  3842.  
  3843.  
  3844.  
  3845.  
  3846.  
  3847.  
  3848.  
  3849.  
  3850.  
  3851.  
  3852.  
  3853.  
  3854.                                     Page 72
  3855.  
  3856.  
  3857.  
  3858.  
  3859.  
  3860.                                    SETPATH NewPath
  3861.  
  3862.         The current PATH environment variable will have its value changed to
  3863.         NewPath. Error messages will occur if the size of the new path value
  3864.         minus the size of the old value is greater than the number of free
  3865.         bytes of environment space available.
  3866.  
  3867.            Variable NewPath,40,"d:\;c:\util\exec;c:\wp\letters"
  3868.  
  3869.            SetPath  NewPath
  3870.            SetPath  "d:\;c:\;"
  3871.  
  3872.  
  3873.  
  3874.  
  3875.  
  3876.  
  3877.  
  3878.  
  3879.  
  3880.  
  3881.  
  3882.  
  3883.  
  3884.  
  3885.  
  3886.  
  3887.  
  3888.  
  3889.  
  3890.  
  3891.  
  3892.  
  3893.  
  3894.  
  3895.  
  3896.  
  3897.  
  3898.  
  3899.  
  3900.  
  3901.  
  3902.  
  3903.  
  3904.  
  3905.  
  3906.  
  3907.                                     Page 73
  3908.  
  3909.  
  3910.  
  3911.  
  3912.  
  3913.                               SETVAR VariableName, Value
  3914.  
  3915.         Set the value of VariableName to the contents of Value. A variable
  3916.         cannot be set to a value greater in length than the  maximum length
  3917.         parameter in the Variable definition.
  3918.  
  3919.            Variable ErrCode,3
  3920.            Variable FileName,79
  3921.  
  3922.            SetVar   ErrCode,99
  3923.            SetVar   FileName,"C:\CONFIG.SYS"
  3924.  
  3925.         In the first usage of the SetVar command, the variable ErrCode is set
  3926.         to "99" and the second usage sets the variable FileName to
  3927.         "C:\CONFIG.SYS".
  3928.  
  3929.  
  3930.  
  3931.  
  3932.  
  3933.  
  3934.  
  3935.  
  3936.  
  3937.  
  3938.  
  3939.  
  3940.  
  3941.  
  3942.  
  3943.  
  3944.  
  3945.  
  3946.  
  3947.  
  3948.  
  3949.  
  3950.  
  3951.  
  3952.  
  3953.  
  3954.  
  3955.  
  3956.  
  3957.  
  3958.  
  3959.  
  3960.                                     Page 74
  3961.  
  3962.  
  3963.  
  3964.  
  3965.  
  3966.                     SUBTRACT Total, Number [,RtnCode] [,Decimals]
  3967.  
  3968.         Subtract the contents of Number from the contents of Total and place
  3969.         the result in Total. If the subtract operation completed without
  3970.         error, RtnCode will contain zero (0). The number of decimals in Total
  3971.         is specified in Decimals. If Decimals is not specified, zero decimal
  3972.         places will be assumed and integer arithmatic will be performed. The
  3973.         Total is rounded to the specified number of decimal places.
  3974.  
  3975.            Variable TotalLines,2,25
  3976.            Variable RtnCode,1
  3977.  
  3978.            Subtract TotalLines,1
  3979.            Compare  RtnCode,0,ErrRoutine
  3980.  
  3981.         Subtract the constant "1" from the variable "TotalLines" and place the
  3982.         result in TotalLines.
  3983.  
  3984.         Using decimal arithmatic in PowerBatch...
  3985.  
  3986.            Variable TotAmt,12
  3987.            Variable TaxAmt,10
  3988.  
  3989.            SetVar   TaxAmt,TotAmt
  3990.            Multiply TaxAmt,'.025',RtnCode,3
  3991.            Subtract TotAmt,TaxAmt,RtnCode,2
  3992.  
  3993.  
  3994.  
  3995.  
  3996.  
  3997.  
  3998.  
  3999.  
  4000.  
  4001.  
  4002.  
  4003.  
  4004.  
  4005.  
  4006.  
  4007.  
  4008.  
  4009.  
  4010.  
  4011.  
  4012.  
  4013.                                     Page 75
  4014.  
  4015.  
  4016.  
  4017.  
  4018.  
  4019.                       TRIM  StrToChg [,Indicator] [,CharToTrim]
  4020.  
  4021.         StrToChg is the string to be "trimmed". Indicator is (L)eft, (R)ight,
  4022.         or (B)oth indicating which end of the string is to be trimmed. If
  4023.         Indicator is not specified, (R)ight will be assumed. CharToTrim is the
  4024.         character which will be trimmed from the string. If no CharToTrim is
  4025.         specified, blanks will be trimmed from the string.
  4026.  
  4027.            Variable    InString,80
  4028.  
  4029.            ReadFile    'INPUT',InString
  4030.            Trim        InString
  4031.  
  4032.         If there are any trailing blanks read from the file, the Trim command
  4033.         will eliminate these trailing blanks. (No character was specified and
  4034.         blank was assumed; no indicator was specified and Right was assumed.
  4035.  
  4036.            Variable    Total,11
  4037.            Variable    Left,1,'L'
  4038.            Variable    Zero,1,'0'
  4039.  
  4040.            Trim        Total,Left,Zero
  4041.  
  4042.         Here the Trim command is used to remove leading (left end) zeros from
  4043.         a numeric field.
  4044.  
  4045.  
  4046.  
  4047.  
  4048.  
  4049.  
  4050.  
  4051.  
  4052.  
  4053.  
  4054.  
  4055.  
  4056.  
  4057.  
  4058.  
  4059.  
  4060.  
  4061.  
  4062.  
  4063.  
  4064.  
  4065.  
  4066.                                     Page 76
  4067.  
  4068.  
  4069.  
  4070.  
  4071.  
  4072.                                   UPPER VariableName
  4073.  
  4074.         Change all the alphabetic characters in VariableName to upper case.
  4075.  
  4076.            Variable InString,25
  4077.            WriteAt  14,25,"Enter your directory name "
  4078.            ReadStr  InString       (user enters c:\util)
  4079.            Upper    InString    (changed to C:\UTIL)
  4080.            ?InPath  InString,GoodDir  (path is always upper case)
  4081.  
  4082.         In this example, the user is prompted for a path name to be entered.
  4083.         The path name is to be compared to the system path for validity. Since
  4084.         the contents of the system path are always in upper case, we change
  4085.         the InString variable to upper case prior to comparison.
  4086.  
  4087.  
  4088.  
  4089.  
  4090.  
  4091.  
  4092.  
  4093.  
  4094.  
  4095.  
  4096.  
  4097.  
  4098.  
  4099.  
  4100.  
  4101.  
  4102.  
  4103.  
  4104.  
  4105.  
  4106.  
  4107.  
  4108.  
  4109.  
  4110.  
  4111.  
  4112.  
  4113.  
  4114.  
  4115.  
  4116.  
  4117.  
  4118.  
  4119.                                     Page 77
  4120.  
  4121.  
  4122.  
  4123.  
  4124.  
  4125.                    VARIABLE VariableName, MaxLength [,InitialValue]
  4126.  
  4127.         Define a variable to be used in a PowerBatch program. The variable will
  4128.         have a maximum length of MaxLength and an initial value of
  4129.         InitialValue. The initial value may be either an alphabetic value, a
  4130.         numeric value, or an ASCII value. An initial value which is alphabetic
  4131.         must be enclosed in either single or double quotes. A numeric initial
  4132.         value may be defined with or without quote delimiters but a convention
  4133.         of no quotes is a recommended technique. An  ASCII value is expressed
  4134.         as #nnn where nnn is the decimal value of the ASCII character. A
  4135.         variable may be of any length from 1 through 255. The initial value
  4136.         may be of any length from 1 through the MaxLength. VariableName is the
  4137.         name which you give to this variable and the means by which you refer
  4138.         to the variable in other PowerBatch commands.  See the discussion on
  4139.         variables at the beginning of this section.
  4140.  
  4141.         The special variables CLP%1 - CLP%16 are used to receive Command line
  4142.         parameters passed to a compiled PowerBatch program. Any command line
  4143.         parameters will be found in these  special parameters only.  Any
  4144.         number of parameters up to the max of 16 may be passed.
  4145.  
  4146.         Define a variable with no initial value.
  4147.            Variable DayOfWeek,9
  4148.  
  4149.         Define an alpha variable with an initial value.
  4150.            Variable ErrMsg1,25,"Invalid directory name."
  4151.  
  4152.         Define a variable with an initial numeric value of 50.
  4153.            Variable PauseTime,2,50
  4154.  
  4155.         Define a variable as a single ASCII value.
  4156.            Variable RightArrow,1,#26
  4157.  
  4158.         Define a variable as a string of ASCII values.
  4159.            Variable DblLine,5,#205#205#205#205#205
  4160.  
  4161.         Define a variable to receive a command line parameter.
  4162.            Variable CLP%1,12
  4163.  
  4164.  
  4165.  
  4166.  
  4167.  
  4168.  
  4169.  
  4170.  
  4171.  
  4172.                                     Page 78
  4173.  
  4174.  
  4175.  
  4176.  
  4177.  
  4178.                                 WAIT TimeToWait
  4179.  
  4180.         Cause the execution of a PowerBatch program to pause for a specified
  4181.         amount of time. TimeToWait is expressed in tenths of a second.
  4182.  
  4183.            Variable PauseTime,2,50
  4184.            Wait     5     (pause half a second)
  4185.            Wait     PauseTime   (pause 5 seconds)
  4186.            Wait     35    (pause 3.5 seconds)
  4187.  
  4188.  
  4189.  
  4190.  
  4191.  
  4192.  
  4193.  
  4194.  
  4195.  
  4196.  
  4197.  
  4198.  
  4199.  
  4200.  
  4201.  
  4202.  
  4203.  
  4204.  
  4205.  
  4206.  
  4207.  
  4208.  
  4209.  
  4210.  
  4211.  
  4212.  
  4213.  
  4214.  
  4215.  
  4216.  
  4217.  
  4218.  
  4219.  
  4220.  
  4221.  
  4222.  
  4223.  
  4224.  
  4225.                                     Page 79
  4226.  
  4227.  
  4228.  
  4229.  
  4230.  
  4231.                   WINDOW0-3 UpX,UpY,LoX,LoY,FGClr [,BKClr]
  4232.                   WINDOW4 UpX,UpY,LoX,LoY,FGClr [,BKClr] [,ShadClr]
  4233.  
  4234.         A virtual screen is defined with the boundaries UpX, UpY, LoX, LoY.
  4235.         The color attributes for this new screen are set to FGClr, BKClr. The
  4236.         area enclosed within this new screen is not cleared. Each window type
  4237.         has a different frame drawn around the window.
  4238.  
  4239.            Window0     No frame
  4240.            Window1     Single line
  4241.            Window2     Double line
  4242.            Window3     Heavy line
  4243.            Window4     Single line with shadow
  4244.  
  4245.         The cursor is positioned in the upper left corner of the window
  4246.         (location 1,1 for the new screen). This virtual screen will wrap at
  4247.         the new column boundaries and scroll at the new row boundaries. This
  4248.         screen appears in every way to DOS as the full size of the screen.
  4249.  
  4250.  
  4251.  
  4252.  
  4253.  
  4254.  
  4255.  
  4256.  
  4257.  
  4258.  
  4259.  
  4260.  
  4261.  
  4262.  
  4263.  
  4264.  
  4265.  
  4266.  
  4267.  
  4268.  
  4269.  
  4270.  
  4271.  
  4272.  
  4273.  
  4274.  
  4275.  
  4276.  
  4277.  
  4278.                                     Page 80
  4279.  
  4280.  
  4281.  
  4282.  
  4283.  
  4284.                       WRITE StringToWrite [,ForeClr] [,BackClr]
  4285.  
  4286.         Write the string contained in StringToWrite at the current cursor
  4287.         location using foreground color attribute ForeClr and background color
  4288.         attribute BackClr. In the absence of ForeClr and BackClr use the
  4289.         current color attributes. If the string contains imbedded color
  4290.         attributes, change the colors in the string according to these values.
  4291.         (See Imbedded Color Commands). The string is not followed by a
  4292.         carriage return, line feed pair (i.e. the cursor is not moved to the
  4293.         first position of the next line).
  4294.  
  4295.         Write the string "Enter your password" in black on white.
  4296.            Write "Enter your password ",0,7
  4297.  
  4298.         Write "Invalid directory name" contained in a variable using the
  4299.         composite color 112, also contained in a variable.
  4300.            Variable ErrMsg1,25,"Invalid directory name."
  4301.            Variable ErrClr,3,112
  4302.            Write ErrMsg1,ErrClr
  4303.  
  4304.         Write the string "Menu of choices" with the "M" in Menu written in
  4305.         color 112 and the remainder of the string written in  color 31.
  4306.            Variable MenuTitle,23,'@112M@031enu of choices'
  4307.            Write MenuTitle
  4308.  
  4309.  
  4310.  
  4311.  
  4312.  
  4313.  
  4314.  
  4315.  
  4316.  
  4317.  
  4318.  
  4319.  
  4320.  
  4321.  
  4322.  
  4323.  
  4324.  
  4325.  
  4326.  
  4327.  
  4328.  
  4329.  
  4330.  
  4331.                                     Page 81
  4332.  
  4333.  
  4334.  
  4335.  
  4336.  
  4337.                  WRITEAT XLoc, YLoc, StringVal [,ForeClr] [,BackClr]
  4338.  
  4339.         Write the value contained in StringVal at column location contained in
  4340.         XLoc and at row location contained in YLoc using the foreground color
  4341.         attribute contained in ForeClr and the background color attribute
  4342.         contained in BackClr. In the absence of ForeClr and BackClr, use the
  4343.         current color attributes. The string is not followed by a carriage
  4344.         return, line feed pair (i.e. the cursor is not moved to the first
  4345.         position of the next line).
  4346.  
  4347.            Variable TitleClr,3,112
  4348.            Variable CurrX,2
  4349.            Variable CurrY,2
  4350.            Variable CompName,25,"The ABC Company"
  4351.            WriteAt  15,3,"The ABC Company",TitleClr
  4352.            WriteAt  CurrX,CurrY,CompName
  4353.  
  4354.         In the first usage of the WriteAt command, the literal "The ABC
  4355.         Company" is written at column 15, row 3. In the second usage, the
  4356.         contents of the variable CompName ("The ABC Company") is written at
  4357.         the column location specified by the contents of variable CurrX and at
  4358.         the row location specified by the contents of variable CurrY.
  4359.  
  4360.  
  4361.  
  4362.  
  4363.  
  4364.  
  4365.  
  4366.  
  4367.  
  4368.  
  4369.  
  4370.  
  4371.  
  4372.  
  4373.  
  4374.  
  4375.  
  4376.  
  4377.  
  4378.  
  4379.  
  4380.  
  4381.  
  4382.  
  4383.  
  4384.                                     Page 82
  4385.  
  4386.  
  4387.  
  4388.  
  4389.  
  4390.                         WRITELINE StringToWrite [,LineNumber]
  4391.  
  4392.         Write the string contained in StringToWrite beginning at position 1 of
  4393.         the line number specified in LineNumber. Follow the string with a
  4394.         carriage return line feed pair (i.e. move the cursor to the first
  4395.         position of the next line). In the absence of LineNumber write the
  4396.         string at the current cursor location. Expand any imbedded color
  4397.         commands in the string. (See note below on imbedded color commands).
  4398.  
  4399.            WriteLine "Please read these instructions ",7
  4400.  
  4401.         The message "Please read these instructions " is written beginning in
  4402.         column 1 of row 7. Follow the string with a CR/LF.
  4403.  
  4404.            WriteLine Msg5
  4405.  
  4406.         Write the contents of the variable Msg5 beginning at the current
  4407.         cursor location. Follow the string with a CR/LF.
  4408.  
  4409.            Write "Enter the letter of the selected drive > "
  4410.            ReadKey  InKey
  4411.            WriteLine   ""
  4412.  
  4413.         Write the string "Enter the letter of the selected drive > ", leaving
  4414.         the cursor positioned at the end of this message (the Write command
  4415.         does not supply a CR/LF. After receiving the entry from the user,
  4416.         position the cursor at the beginning of the next line by "writing" to
  4417.         the screen a null string (two quote marks without any character
  4418.         between) using the WriteLine command. This will write to the screen
  4419.         only a CR/LF.
  4420.  
  4421.  
  4422.  
  4423.  
  4424.  
  4425.  
  4426.  
  4427.  
  4428.  
  4429.  
  4430.  
  4431.  
  4432.  
  4433.  
  4434.  
  4435.  
  4436.  
  4437.                                     Page 83
  4438.  
  4439.  
  4440.  
  4441.  
  4442.  
  4443.                                   STANDARD VARIABLES
  4444.  
  4445.         There are several variables which are in every PowerBatch program. These
  4446.         Standard Variables may be referenced without having to define them
  4447.         with a Variable command.
  4448.  
  4449.                 DispAdapter - This 4 character variable will contain a code describing
  4450.            the type of display controller card located in your system. If the
  4451.            first character contains "M", the adapter is a monochrome adapter.
  4452.            If the first character contains "C", the adapter is a color
  4453.            adapter. The remaining 3 characters may contain:
  4454.                  MDA-Monochrome Display Adapter
  4455.                  CGA-Color Graphics Adapter
  4456.                  EGA-Extended Graphics Adapter
  4457.                  VGA-Video Graphics Array
  4458.                  MGA-Multi-color Graphics Array
  4459.               If no video adapter is found the field will contain "NONE".
  4460.  
  4461.                 DOSError - If the external program which you execute sets a DOS error
  4462.            code, the error code will be placed in this variable.
  4463.  
  4464.                 DOSVer - This field will contain a 4 character code for the version of
  4465.            DOS installed. The first two characters are the major version and
  4466.            the last two the minor version. DOS 6.0 will be reported as 0600.
  4467.  
  4468.                 ErrorLevel - If the external program which you execute sets an
  4469.            ErrorLevel and that ErrorLevel is returned to PowerBatch by DOS, it
  4470.            will be placed in this variable.
  4471.  
  4472.                 ParallelPorts - This variable will contain the number of parallel ports
  4473.            supported by your hardware.
  4474.  
  4475.                 SerialPorts - This variable will contain the number of serial ports
  4476.            supported by your hardware.
  4477.  
  4478.  
  4479.  
  4480.  
  4481.  
  4482.  
  4483.  
  4484.  
  4485.  
  4486.  
  4487.  
  4488.  
  4489.  
  4490.                                     Page 84
  4491.  
  4492.  
  4493.  
  4494.  
  4495.  
  4496.                                 Command Summary
  4497.  
  4498.         ?Color      Foreground Background Composite
  4499.         ?CurrDir    CurrDrive CurrDirectory
  4500.         ?Date       DayOfWeek Month Day Year
  4501.         ?DirExist   DirName FoundLbl [NotFoundLbl]
  4502.         ?DiskInfo   DriveLetter VolID DriveType
  4503.         ?DiskSpace  DriveLetter TotalSpace FreeSpace
  4504.         ?DriveExist DriveLetter ValidLabel [InvalidLabel]
  4505.         ?EnvStr     EnvironName EnvironNameContents
  4506.         ?FileExist  FileName FoundLabel [NotFoundLabel]
  4507.         ?FileExpan  FileName FoundLabel [NotFoundLabel]
  4508.         ?FileSize   FileSize FileName
  4509.         ?Inpath     DirName FoundLabel [NotFoundLabel]
  4510.         ?Time       CurrentTime
  4511.         Add         Sum Number [RtnCode] [Decimals]
  4512.         Beep        Frequency Duration [Repeat]
  4513.         Blink
  4514.         Boot
  4515.         Box0-3      Ux Uy Lx Ly ForeClr [BackClr]
  4516.         Box4        Ux Uy Lx Ly ForeClr [BackClr] [ShadowClr]
  4517.         BreakOn
  4518.         BreakOff
  4519.         Center      TextToCenter LineNum
  4520.         ChDir       DirName
  4521.         Clear       FgrndClr [BgrndClr] [ClearChar] [BorderClr]
  4522.         ClearBox    Ux Uy Lx Ly FgClr [BkgClr] [ClearChar]
  4523.         ClearLine   LineNum ForeGrndClr [BackgrndClr]
  4524.         Color       ForeGroundClr [BackGroundClr]
  4525.         Compare     Value1 Value2 1GR2 [1Less2] [1Eq2]
  4526.         Concat      Target String1 [String2]
  4527.         Cursor      CursorType (1=Normal,2=Off,3=Fat,4=Block)
  4528.         Divide      Result Divisor [RetCode] [Decimals]
  4529.         EnhanClr    Mode
  4530.         GoTo        Label
  4531.         GoToXY      XCo-ord YCo-ord
  4532.         Halt        [ErrorLevel]
  4533.         Label       LabelName
  4534.         Length      StringLength String
  4535.         LocStr      LookFor LookIn [Occur] Loc [Replace]
  4536.         Lower       String
  4537.         MidString   NewString OldString Offset Length
  4538.         Multiply    Result Number [RtnCode] [Decimals]
  4539.         Normal
  4540.         Print       PrinterNum StrToPrint [RtnCode]
  4541.  
  4542.  
  4543.                                     Page 85
  4544.  
  4545.  
  4546.  
  4547.  
  4548.  
  4549.         PrintLine   PrinterNum StrToPrint [RtnCode]
  4550.         PrintScr
  4551.         Prompt      NewPromptVal
  4552.         Random      UpperLimit Result
  4553.         ReadKey     Target [SpecInd] [Timeout] [NoPrt] [CtlChar]
  4554.         ReadStr     Target [Timeout]
  4555.         ReadUpKey   Target [Timeout]
  4556.         ReadYN      Message Target [Timeout] [NoPrt]
  4557.         Reverse
  4558.         ScrMode     Mode
  4559.         SetEnv      EnvironName EnvironValue
  4560.         SetPath     NewPath
  4561.         SetVar      VariableName Value
  4562.         Subtract    Total Number [RtnCode] [Decimals]
  4563.         Trim        StrToTrim [Indicator] [CharToTrim]
  4564.         Upper       VariableName
  4565.         Variable    VariableName MaxLength [InitialValue]
  4566.         Wait        TimeToWait (in tenths of a second)
  4567.         Window0-3   UpX UpY LoX LoY FgClr [BkClr]
  4568.         Window4     UpX UpY LoX LoY FgClr [BkClr] [ShadClr]
  4569.         Write       StringToWrite [ForeClr] [BackClr]
  4570.         WriteAt     XLoc YLoc StringVal [ForeClr] [BackClr]
  4571.         WriteLine   StringToWrite [LineNumber]
  4572.  
  4573.         Standard Variables
  4574.  
  4575.         DispAdapter Current display adapter
  4576.         DOSError Last DOS error code
  4577.         DOSVer      Running DOS version
  4578.         ErrorLevel  Last DOS errorlevel
  4579.         ParallelPorts  Num of parallel ports in running machine
  4580.         SerialPorts Num of serial ports in running machine
  4581.  
  4582.  
  4583.  
  4584.  
  4585.  
  4586.  
  4587.  
  4588.  
  4589.  
  4590.  
  4591.  
  4592.  
  4593.  
  4594.  
  4595.  
  4596.                                     Page 86
  4597.  
  4598.  
  4599.  
  4600.  
  4601.  
  4602.                                Compilation Errors
  4603.  
  4604.         Compilation errors are printed on the screen and also written in a
  4605.         file named ProgName.MAP where ProgName is the name of the program you
  4606.         have just compiled (If you have a split screen editor, view the source
  4607.         in one screen part and the errors in the other part). If the source
  4608.         line is available, the source line is printed above the error preceded
  4609.         by the line number count. Source lines are not available during the
  4610.         second pass of the compiler which may generate "Label not defined" and
  4611.         "Variable not defined" errors.
  4612.  
  4613.               "Not a valid command" - This error is generated when the first
  4614.               word on the command line is not a PowerBatch command and contains
  4615.               more than 8 characters.
  4616.  
  4617.               Example:
  4618.               13 Directory name checked here.
  4619.               [DIRECTORY] Not a valid command
  4620.  
  4621.                                Probably should be
  4622.               ;Directory name checked here
  4623.  
  4624.               "Missing variable" - A command contains less than the required
  4625.               number of operands.
  4626.  
  4627.               Example:
  4628.               21 ?Color   ForeColor,BackColor
  4629.               [] Missing variable
  4630.  
  4631.               Variable for the composite color byte is missing.
  4632.  
  4633.               "Expected a variable Name" - A string was found in an operand that
  4634.               may contain only a variable name.
  4635.  
  4636.               Example:
  4637.               10 ?Time "Current Time"
  4638.               [Current Time] Expected a variable name
  4639.  
  4640.               The current time may only be placed in a variable.
  4641.  
  4642.              "Quoted literal not terminated" - A single quote was encountered
  4643.               within a source line.
  4644.  
  4645.               Example:
  4646.               9 Center "Move Command,5
  4647.  
  4648.  
  4649.                                     Page 87
  4650.  
  4651.  
  4652.  
  4653.  
  4654.  
  4655.                  [] Quoted literal not terminated
  4656.  
  4657.               Closing quote should precede comma.
  4658.  
  4659.               "Invalid max length specified" - The second operand of a variable
  4660.               definition should specify the maximum length of the variable.
  4661.               The value found was not numeric.
  4662.  
  4663.               Example:
  4664.               3 Variable  CompName,"The ABC Company"
  4665.                 [The ABC Company] Invalid max length specified
  4666.  
  4667.              "Variable not defined" - A reference to a variable was made in the
  4668.               source file but the variable was not defined with the Variable
  4669.               command.
  4670.  
  4671.               Example:
  4672.               [CURRDATE] Variable not defined
  4673.  
  4674.               "Duplicate variable" - The same variable name has appeared 2 or
  4675.               more times in a Variable definition statement.
  4676.  
  4677.               Example:
  4678.               7 Variable  CompName,25
  4679.               [COMPNAME] Duplicate variable
  4680.  
  4681.               "Duplicate label" - The same label name has appeared 2 or more
  4682.               times in a Label definition statement.
  4683.  
  4684.               Example:
  4685.               16 Label    Step2
  4686.               [STEP2] Duplicate label
  4687.  
  4688.               "Invalid hex definition in variable" - A variable definition
  4689.               contained a # not enclosed in quotes signifying a value
  4690.               definition by ASCII value. The characters following this # were
  4691.               not numeric or did not equate to an ASCII character.
  4692.  
  4693.               Example:
  4694.               Variable Return,2,#J#219
  4695.  
  4696.                  #J is not valid
  4697.  
  4698.               "External command >" - This is not an error message, but is a
  4699.               check to alert you to each command found in a PowerBatch source
  4700.  
  4701.  
  4702.                                     Page 88
  4703.  
  4704.  
  4705.  
  4706.  
  4707.  
  4708.               file that will be treated as an external command. External
  4709.               commands are DOS intrinsic commands, .COM, and .EXE commands or
  4710.               programs (even PowerBatch compiled programs) and .BAT (standard
  4711.               DOS batch files) that are to be executed by PowerBatch.
  4712.  
  4713.               Example:
  4714.               External command > 12 DIR  (DOS directory command)
  4715.               External command > 29 MYPROG (Exe module MYPROG)
  4716.  
  4717.  
  4718.  
  4719.  
  4720.  
  4721.  
  4722.  
  4723.  
  4724.  
  4725.  
  4726.  
  4727.  
  4728.  
  4729.  
  4730.  
  4731.  
  4732.  
  4733.  
  4734.  
  4735.  
  4736.  
  4737.  
  4738.  
  4739.  
  4740.  
  4741.  
  4742.  
  4743.  
  4744.  
  4745.  
  4746.  
  4747.  
  4748.  
  4749.  
  4750.  
  4751.  
  4752.  
  4753.  
  4754.  
  4755.                                     Page 89
  4756.  
  4757.  
  4758.  
  4759.  
  4760.  
  4761.                                     Examples
  4762.  
  4763.         The source for several examples is contained on your installation
  4764.         disk. You may print these examples by entering:
  4765.  
  4766.            COPY INQUIRE.PWR LPT1
  4767.  
  4768.         These examples may be compiled using the POWERMAK command by entering a
  4769.         command similar to:
  4770.  
  4771.            POWERMAK INQUIRE <enter>
  4772.  
  4773.         This compiles the source for INQUIRE.
  4774.  
  4775.  
  4776.  
  4777.  
  4778.  
  4779.  
  4780.  
  4781.  
  4782.  
  4783.  
  4784.  
  4785.  
  4786.  
  4787.  
  4788.  
  4789.  
  4790.  
  4791.  
  4792.  
  4793.  
  4794.  
  4795.  
  4796.  
  4797.  
  4798.  
  4799.  
  4800.  
  4801.  
  4802.  
  4803.  
  4804.  
  4805.  
  4806.  
  4807.  
  4808.                                          Page 90
  4809.  
  4810.  
  4811.  
  4812.  
  4813.  
  4814.                                IMBEDDED COLOR COMMANDS
  4815.  
  4816.         A literal or a variable may be defined which has color commands
  4817.         imbedded in the text of the literal allowing you to change the color
  4818.         in the middle of the string to be printed. If you were creating a
  4819.         tutorial and wanted a menu at the bottom of the screen that gave the
  4820.         user several command choices and you wanted this menu to have the
  4821.         first character of each command in reverse video, PowerBatch provides a
  4822.         means to accomplish this easily. Suppose the command line is:
  4823.  
  4824.            Next Prev Load ........
  4825.  
  4826.         and the N, P, and L were to be in reverse video you would define the
  4827.         variable (or literal) as:
  4828.  
  4829.            Variable Cmd,75,"@112N@007ext @112P@007rev @112L@007oad"
  4830.  
  4831.         IN THIS EXAMPLE THE @ REPRESENTS CTRL-A BECAUSE OUR PRINTER WILL NOT
  4832.         PRINT A CTRL-A!
  4833.  
  4834.         The syntax for imbedded color commands is Ctrl-A followed by the THREE
  4835.         digit color attribute. Thus @112 means change the color to 112 and
  4836.         continue printing in this color until another change is made. Further
  4837.         examining the line...@112N@007ext means change to color 112, print N,
  4838.         change to color 007, print ext (Next).
  4839.  
  4840.         The ASCII value of Ctrl-A is 001. Most text editors will allow you to
  4841.         enter an ASCII character by entering the actual ASCII value by
  4842.         pressing the Alt key and entering the ASCII value on the numeric
  4843.         keypad (not the numbers above the character keyboard). Thus entering
  4844.         Ctrl-A becomes as simple as pressing Alt-1. 
  4845.  
  4846.  
  4847.  
  4848.  
  4849.  
  4850.  
  4851.  
  4852.  
  4853.  
  4854.  
  4855.  
  4856.  
  4857.  
  4858.  
  4859.  
  4860.  
  4861.                                          Page 91
  4862.  
  4863.  
  4864.  
  4865.  
  4866.  
  4867.                              Composite Color Values
  4868.  
  4869.                              Color Names And Their Values
  4870.  
  4871.         Black (Blk)    0     Dk. Gray (DGy)    8
  4872.         Blue (Blu)     1     Lt. Blue (LBl)    9
  4873.         Green (Grn)    2     Lt. Green(LGr)    10
  4874.         Cyan (Cyn)     3     Lt. Cyan (LCy)    11
  4875.         Red (Red)      4     Lt. Red (Lrd)     12
  4876.         Magenta (Mag)  5     Lt. Magenta (LMg) 13
  4877.         Brown (Brn)    6     Yellow (Yel)      14
  4878.         Lt. Gray (LGy) 7     White (Wht)       15
  4879.  
  4880.         On the following page is two tables which give the ASCII value for the
  4881.         composite color byte (the single byte DOS uses to identify the current
  4882.         color). This single value is a composite of the two values for the
  4883.         background and foreground color values.  To arrive at the composite
  4884.         value multiply the background color value by 16 and add the foreground
  4885.         color value. Some examples will help explain:
  4886.            Red on Blue
  4887.            (Blue * 16) + Red = 20        (001 * 16) + 4 = 20
  4888.  
  4889.            White on Red
  4890.            (Red * 16) + White = 79       (004 * 16) + 15 = 79
  4891.  
  4892.         Verify these composite calculations by finding the corresponding
  4893.         values in the tables on the next page. To find Red on Blue, find the
  4894.         background color down the left side of the table and the foreground
  4895.         color across the top. Blue is the second color down and Red the fifth
  4896.         color across; at this intersection you will find the value 020.
  4897.         (Remember the color values begin with zero). Red is the fifth color
  4898.         down and White is the 16 color across; at this intersection is value
  4899.         079.
  4900.  
  4901.  
  4902.  
  4903.  
  4904.  
  4905.  
  4906.  
  4907.  
  4908.  
  4909.  
  4910.  
  4911.  
  4912.  
  4913.  
  4914.                                          Page 92
  4915.  
  4916.  
  4917.  
  4918.  
  4919.  
  4920.                           Normal (non-blinking) Colors
  4921.  
  4922.  
  4923.             Blk Blu Grn Cyn Red Mag Brn LGy DGy LBl LGr LCy LRd LMg Yel Wht
  4924.         Blk 000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 
  4925.         Blu 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031
  4926.         Grn 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047
  4927.         Cyn 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063
  4928.         Red 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079
  4929.         Mag 080 081 082 083 084 085 986 087 088 089 090 091 092 093 094 095
  4930.         Brn 096 097 098 099 100 101 102 103 104 105 106 107 108 109 110 111
  4931.         Gry 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
  4932.  
  4933.         Colors Which Blink
  4934.  
  4935.  
  4936.             Blk Blu Grn Cyn Red Mag Brn LGy DGy LBl LGr LCy LRd LMg Yel Wht
  4937.         Blk 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
  4938.         Blu 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
  4939.         Grn 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
  4940.         Cyn 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
  4941.         Red 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207
  4942.         Mag 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223
  4943.         Brn 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239
  4944.         Gry 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
  4945.  
  4946.  
  4947.  
  4948.  
  4949.  
  4950.  
  4951.  
  4952.  
  4953.  
  4954.  
  4955.  
  4956.  
  4957.  
  4958.  
  4959.  
  4960.  
  4961.  
  4962.  
  4963.  
  4964.  
  4965.  
  4966.  
  4967.                                          Page 93
  4968.  
  4969.  
  4970.  
  4971.  
  4972.  
  4973.         Border Color 40                      SetEnv 72
  4974.         Box 34, 35                         SetVar 74
  4975.         Box With Shadow 35                 ERRORLEVEL 13, 52, 84
  4976.         Case                               External Commands 12, 89
  4977.           Lower 56                         Field length
  4978.           Upper 68, 77                       maximum 67
  4979.         CD, ChDir 39                       File exists 25, 26
  4980.         Center A Line Of Text 38           File Size 27
  4981.         Color attribute 16, 17, 59         FileName
  4982.         Command Line Parameters 14, 78       Does It Exist 25
  4983.         Command Notation 15                  Full Path Name 26
  4984.         Command Summary 85                 Flush Keyboard 49
  4985.         Command Syntax 16                  Frame 34, 35
  4986.         Comments 9                         Imbedded Colors 91
  4987.         Compare                            Installation 6
  4988.           alphabetic 44                    Interior of a box 41
  4989.           numeric 44                       Introduction 1
  4990.         Compilation Errors 87              Keyboard Input
  4991.         Composite Color Values 92            ReadKey 65
  4992.         Concatenate Strings 45               ReadStr 67
  4993.         Concept Of Operation 4               ReadUpKey 68
  4994.         Ctrl - Break 36                      ReadYN 69
  4995.         Current Date 19                    Labels 11
  4996.         Current Directory 18               License Agreement 1
  4997.         Current Drive 18                   Literals 9, 10
  4998.         Current Time 29                    Monitor Type 84
  4999.         Cursor Postion 51                  ParallelPorts 84
  5000.         Directory 20                       Passing Parameters
  5001.         Directory Exists 20                  14
  5002.         Directory, Change to new 39        PATH 15
  5003.         Disk capacity 22                     Is Dir In 28
  5004.         Disk Drive                           SetPath 73
  5005.           Valid Letter 23                  Pause 79
  5006.         Disk Space                         Pause A Program 79
  5007.           Free 22                          PowerBatch Commands
  5008.           Total 22                           ?Color 17
  5009.         DOS errorlevel 52                    ?CurrDir 18
  5010.         DOS search path 28                   ?Date 19
  5011.         DOS Version 84                       ?DirExist 20
  5012.         DOSERROR 13, 84                      ?DiskInfo 21
  5013.         Drive Type 21                        ?DiskSpace 22
  5014.         Drive, Change to new 39              ?DriveExist 23
  5015.         Environment Variables 14             ?EnvStr 24
  5016.           Contents 24                        ?FileExist 25
  5017.  
  5018.  
  5019.  
  5020.                                          Page 94
  5021.  
  5022.  
  5023.  
  5024.  
  5025.  
  5026.                                              ?FileExpand 26                                                                        Upper 77
  5027.           ?FileSize 27                       Variable 78
  5028.           ?InPath 28                         Wait 79
  5029.           ?Time 29                           Window 80
  5030.           Add 30                             Write 81
  5031.           Beep 31                            WriteAt 82
  5032.           Blink 32                           WriteLine 83
  5033.           Boot 33                          PROMPT 15
  5034.           Box 34, 35                       Random Numbers 64
  5035.           BreakOff 37                      Screen
  5036.           BreakOn 36                         Clear 40
  5037.           Center 38                          Color 43
  5038.           ChDir 39                         Screen Window 80
  5039.           Clear 40                         SerialPorts 84
  5040.           ClearBox 41                      SETENV 15
  5041.           ClearLine 42                     SETPATH 15
  5042.           Color 43                         Software Support 3
  5043.           Compare 44                       Standard Variables
  5044.           Concat 45                          DispAdapter 84
  5045.           Cursor 46                          DOSError 84
  5046.           Divide 47                          DOSVer 84
  5047.           FlushKey 49                        ErrorLevel 84
  5048.           GoTo 50                            ParallelPorts 84
  5049.           GoToXY 51                          SerialPorts 84
  5050.           Halt 52                          String length 55
  5051.           Label 53                         Syntax
  5052.           Length 55                          Compilation 7
  5053.           Lower 56                         System speaker 31
  5054.           MidString 57                     Time, Current 29
  5055.           Multiply 58                      Trademarks 1
  5056.           Normal 59                        Variable map 7
  5057.           PrintScr 62                      Variables 9
  5058.           Prompt 63                          Value Of 74
  5059.           Random 64                        Virtual Window 80
  5060.           ReadKey 65                       Volume ID 21
  5061.           ReadStr 67                       Window 80
  5062.           ReadUpKey 68                     ReadYN 69
  5063.           Reverse 70
  5064.           ScrMode 71
  5065.           SetEnv 72
  5066.           SetPath 73
  5067.           SetVar 74
  5068.           Subtract 75
  5069.  
  5070.  
  5071.  
  5072.                                          Page 95
  5073.  
  5074.  
  5075.  
  5076.  
  5077.  
  5078.         This page intentionally left blank for your notes...
  5079.  
  5080.  
  5081.  
  5082.  
  5083.  
  5084.  
  5085.  
  5086.  
  5087.  
  5088.  
  5089.  
  5090.  
  5091.  
  5092.  
  5093.  
  5094.  
  5095.  
  5096.  
  5097.  
  5098.  
  5099.  
  5100.  
  5101.  
  5102.  
  5103.  
  5104.  
  5105.  
  5106.  
  5107.  
  5108.  
  5109.  
  5110.  
  5111.  
  5112.  
  5113.  
  5114.  
  5115.  
  5116.  
  5117.  
  5118.  
  5119.  
  5120.  
  5121.  
  5122.  
  5123.  
  5124.  
  5125.                                          Page 96
  5126.